LINUX.ORG.RU

Посоветуйте _полезную_ книжку по Емакс.


0

0

Почитал книгу от O'Relly - ИМХО тема не раскрыта. Воды и ?беспочвенных? похвал много, по-делу - мало. Тема сторонних расширений практически не затронута. Посоветуйте литературу, в которой описано большинство приемов и __средств__ для полноценной работы.(C, C++, perl, python, erlang, ocaml, clisp) Разумный автокомплит, деревья классов/пр. всякие, __проект__, автосоздание makefile, навигация по прожекту, поиск в документации, встроенный GUI отладчик и прочие радости жизни...
P.S. Про ECB знаю, но она:
1) не поддерживает всего
2) должно же быть еще что-то полезное, Емаксу ж лет ого-го...
3) встр. GUI отладчик не обнаружен.

anonymous

>3) встр. GUI отладчик не обнаружен.

Tools->Debbuger

>1) не поддерживает всего
>2) должно же быть еще что-то полезное, Емаксу ж лет ого-го...

для c/c++ не находил, по-моему нет, рад буду если ошибаюсь,

c/c++ автокомплит сделан через cedet, который много чего не умеет и куча багов,
но среди opensource это лучшее дополнение для emacs.

для разработки на lisp вроде есть неплохая вещь

fghj ★★★★★
()

Для C/C++ cedet и xref. Для lisp - slime. Для erlang'a - erlang.el + esense + distel (для эрланга меня вообще радуюет поддержка в емаксе), для perl вроде встроенной моды хватает. Для питон не очень хватает, но что-то должно быть, я когда на нём писал в принципе обходился стандартной модой + ipython. Для ocaml tuareg-mode/ocaml-mode - ещё не разбирался но тоже вроде ничё. Кстати может кто пояснит отличия этих двух мод в двух словах?

А вообще иди на emacswiki.org - там всё найдёшь (ну или почти всё).

CrazyPit ★★★
()

Есть несколько вещей без которых легко можно обойтись в процессе программирования.

1) Дерево классов (А на фига оно вообще нужно, что так необходимо постоянно смотреть на него ?)

2) Автокомплит для '.' и '->'. Лучше M-/

3) проектный файл. Научится писать makefile самому - первейшая необходимость

могу продолжить

anonymous
()
Ответ на: комментарий от anonymous

>2) Автокомплит для '.' и '->'. Лучше M-/

Кстати может кто из знатоков скажет. Можно ли пирсобачить автокомплит аля M-/ т.е. тупой. Но чтобы он как в случае с лиспом разворачивал имена с разделителем типа m-v-b -> multiple-value-bind , только работал с подчёркиванием. m-s-f -> my_super_function

CrazyPit ★★★
()
Ответ на: комментарий от anonymous

1) Разобраться/доработать/состыковать писанный не тобой код
2) Чем лучше? Тупизной?
3) Рутину нуно поручать машине

anonymous
()

Ну ты всё в одну кучу... Для начала нужно уяснить, что IDE не Emacs, а Unix в целом. Потом внимательно изучить info-emacs-manual.

;; Разумный автокомплит, деревья классов/пр. всякие,

Деревья классов нафиг (работа для doxygen), автокомплит по-настоящему умеет только xrefactory (купить или сломать, там защита простая).

;; __проект__, автосоздание makefile,

Путаница: makefile и есть проект. Сделай мощный makefile, чтобы _автоматически_ подхватывал все файлы в нужных директориях, и дело в шляпе.

;; навигация по прожекту, поиск в документации,

Навигация опять xrefactory (справляется с блеском) или на худой конец etags. Документацию читать отдельно (doxygen). В принципе, можно прикрутить кой-чего, но я пока обхожусь.

;; встроенный GUI отладчик

GUD.

;; и прочие радости жизни...

Как уже сказали: emacswiki. Рекомендую освоить какой-нибудь пакет для переключения буферов (я использую swbuff с собственной подкруткой для фильтрации буферов).

hbee ★★★★
()
Ответ на: комментарий от CrazyPit

Для минибуфера есть partial-completion-mode. Для рабочих готового решения не видел,
но можно немного подправить hippie-exp.el:

--- /usr/share/emacs/21.3/lisp/hippie-exp.el    2001-07-16 18:22:58.000000000 +0600
+++ hippie-exp.el       2006-02-11 15:40:46.000000000 +0500
@@ -235,12 +235,18 @@
 (defcustom hippie-expand-dabbrev-as-symbol t
   "*Non-nil means expand as symbols, i.e. syntax `_' is considered a letter."
   :group 'hippie-expand
   :type 'boolean)
 
 ;;;###autoload
+(defcustom hippie-expand-partial-completion nil
+  "*Expand partial pattern (for example `h-e-p-c' to `hippie-expand-partial-completion')."
+  :group 'hippie-expand
+  :type 'boolean)
+
+;;;###autoload
 (defcustom hippie-expand-no-restriction t
   "*Non-nil means that narrowed buffers are widened during search."
   :group 'hippie-expand
   :type 'boolean)
 
 ;;;###autoload
@@ -1066,12 +1072,16 @@
 (defun he-dabbrev-search (pattern &optional reverse limit)
   (let ((result ())
        (regpat (cond ((not hippie-expand-dabbrev-as-symbol)
                       (concat "\\<" (regexp-quote pattern) "\\sw+"))
                      ((eq (char-syntax (aref pattern 0)) ?_)
                       (concat (regexp-quote pattern) "\\(\\sw\\|\\s_\\)+"))
+                     (hippie-expand-partial-completion
+                      (concat "\\<" 
+                              (replace-regexp-in-string "\\s_" "\\\\sw*?\\\\s_" (regexp-quote pattern)) 
+                              "\\(\\sw\\|\\s_\\)*"))
                      (t
                       (concat "\\<" (regexp-quote pattern)
                               "\\(\\sw\\|\\s_\\)+")))))
     (while (and (not result) 
                (if reverse
                     (re-search-backward regpat limit t)


Назначить сочетание:

(global-set-key [(meta \?)] 
                (lambda (arg)
                  (interactive "P")
                  (let ((hippie-expand-partial-completion t)
                        (hippie-expand-try-functions-list '(try-expand-dabbrev-visible
                                                            try-expand-dabbrev
                                                            try-expand-dabbrev-all-buffers))
                        (hippie-expand-verbose t))
                    (hippie-expand arg))))


Чтобы не писать разделители, надо поменять строку с replace-regexp-in-string:

(replace-regexp-in-string "\\(\\sw\\)" "\\1\\\\sw*?\\\\s_?" (regexp-quote pattern))

amm
()

Привет.

1. Автор от тебя пахнет Windows'ом.
2. STFW http://www.gnu.org/manual/manual.html. Там есть и про emacs и 
про make и про gcc и про многое другое тоже.
3. Рекомендую "The Art of Unix Programming" Eric Steven Raymond;
"The unix programming environment".

Вы начали знакомство с UNIX программированием не с того места(IMHO).
 Можно было бы, например, начать с vim :-).


Надеюсь, был полезен.

Lego_12239 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.