Программирование Elisp - какая установка лучше? - PullRequest
16 голосов
/ 08 марта 2011

В Emacs есть все классные языковые режимы программирования, написанные на elisp, но, по-видимому, нет особой поддержки самой elisp.

Поскольку слизь не работает для elisp, я спрашиваю себя, не взломан ли весь этот код elisp в буфере scratch ? Не нужно ли что-то вроде слизи при написании элиспа, или его просто нет? Кто-нибудь использует ECB и семантику для больших проектов elisp?

Ответы [ 7 ]

28 голосов
/ 09 марта 2011

ielm - это Emacs Lisp REPL: Интерактивный режим Emacs Lisp.

М-х иельм доставит вас туда.

15 голосов
/ 09 марта 2011

Сам Emacs поставляется с поддержкой Emacs Lisp.Базовые и промежуточные вещи, такие как завершение (M-TAB), поиск в библиотеке (M-x apropos), документация (C-h f, C-h v, C-h S), оперативный запуск кода (C-M-x, M-:) работают непосредственно в работающем Emacs.

Основная цель Slime - взаимодействие с внешним процессом.Вам не нужно это для Emacs Lisp (если вы не разрабатываете для другой версии Emacs, но это редкая проблема).

Функции ECB и семантики в основном полезны для больших проектов (состоящих избольше, чем несколько исходных файлов).Люди не склонны писать большие проекты в Emacs Lisp.

13 голосов
/ 09 марта 2011

Всегда есть emacs-lisp-mode , который (по крайней мере, в Emacs 23) автоматически загружается всякий раз, когда вы редактируете файл .el. Похоже, это то, что многие хакеры emacs lisp используют для написания своих программ. У него есть несколько приятных функций (таких как компиляция или оценка буфера, некоторые инструменты отладки, профилирование). Буфер * scratch * по умолчанию редактируется из режима lisp-взаимодействия-режима, который немного отличается.

Это не так полнофункционально, как, скажем, слизь (у elisp гораздо меньшее сообщество, чем у общего lisp), но это определенно работает. Вам придется изучить документацию и поэкспериментировать с режимом, чтобы узнать, какие функции вы можете использовать.

10 голосов
/ 09 марта 2011

Как уже указывалось, Emacs уже является окончательной средой разработки elisp и предоставляет вам большую часть функциональности, которую вы, вероятно, захотите.

Вы также можете использовать ctags / etags для генерации внешнего индекса для своей базы кода elisp, если вы хотите перейти к определениям функций, которые еще не были загружены (и в которых отсутствовали объявления автозагрузки). M-x find-function RET обрабатывает это иначе. (Я связываю это с C-h C-f )

Функции "apropos" являются ключевыми для поиска вещей в целом. Для легкого доступа я использую следующие привязки:

(define-prefix-command 'Apropos-Prefix nil "Apropos (a,c,d,i,l,v,C-v)")
(global-set-key (kbd "C-h C-a") 'Apropos-Prefix)
(define-key Apropos-Prefix (kbd "a")   'apropos)
(define-key Apropos-Prefix (kbd "C-a") 'apropos)
(define-key Apropos-Prefix (kbd "c")   'apropos-command)
(define-key Apropos-Prefix (kbd "d")   'apropos-documentation)
(define-key Apropos-Prefix (kbd "i")   'info-apropos)
(define-key Apropos-Prefix (kbd "l")   'apropos-library)
(define-key Apropos-Prefix (kbd "v")   'apropos-variable)
(define-key Apropos-Prefix (kbd "C-v") 'apropos-value)

;; Use prefix arg (C-u) to see more results for a call,
;; or uncomment the next line to do this by default:
;; (setq apropos-do-all t)
;; See C-h v apropos-do-all RET for details.

Я также включаю eldoc-mode, и у меня есть imenu-ido-goto-symbol связанный (но очень редко используемый).

Существуют и другие библиотеки, которые могут оказаться полезными. Я знаю, что некоторые люди клянутся, например, ParEdit . По общему признанию, довольно сложно ориентироваться на поиск библиотек elisp, которые полезны для написания elisp. Я не уверен, есть ли в Emacs Wiki категория для этого?

6 голосов
/ 20 августа 2011
  • Обычно я использую emacs-lisp-mode вместо режима по умолчанию для *scratch*.В 99% случаев я хочу сохранить даже одноразовые интерактивные тесты (хотя бы временно), поэтому я чаще использую файл *.el, чем *scratch*.

  • Сосульки могут очень помочь при взаимодействии с Emacs Lisp.Пути слишком многочисленны, чтобы перечислять здесь.Вот два обзора, которые могут дать представление:

http://www.emacswiki.org/emacs/EmacsNewbieWithIcicles

http://www.emacswiki.org/emacs/Icicles_-_Nutshell_View

1 голос
/ 08 сентября 2014

Я думаю, что добавить это к вам .emacs

(define-key emacs-lisp-mode-map (kbd "M-.") 'find-function-at-point)

будет очень полезно.

0 голосов
/ 15 апреля 2016
M-x edebug-defun 

для отладки функции Я думаю, что это лучшие инструменты отладки для elisp.

...