Elisp编程 - 什么是最好的设置?

时间:2011-03-08 20:58:31

标签: emacs development-environment elisp

Emacs中有各种很酷的编程语言模式,用elisp编写,但显然没有特别支持elisp本身。

由于slime不适用于elisp,我问自己是否所有elisp代码都只是在 scratch 缓冲区中被黑了? 在编写elisp时是不是需要像粘液这样的东西,还是根本就不存在?是否有人使用ECB和语义进行更大的elisp项目?

7 个答案:

答案 0 :(得分:28)

ielm是Emacs Lisp REPL:Interactive Emacs Lisp Mode。

M-x ielm 让你到那儿。

答案 1 :(得分:15)

Emacs本身带有Emacs Lisp支持。基本到中间的内容,例如完成(M-TAB),库搜索(M-x apropos),文档(C-h fC-h vC-h S),运行代码-the-fly(C-M-xM-:)直接在正在运行的Emacs中运行。

史莱姆的主要目的是与外部流程互动。你不需要为Emacs Lisp(除非你是为不同版本的Emacs开发,但这是一个罕见的问题)。

ECB和语义的功能主要用于大型项目(包含多个源文件)。人们不倾向于在Emacs Lisp中编写大型项目。

答案 2 :(得分:13)

始终emacs-lisp-mode,只要您编辑.el文件,就会自动加载(至少在Emacs 23中)。这似乎是许多emacs lisp黑客用来编写程序的东西。它有一些很好的功能(比如编译或评估缓冲区,一些调试工具,分析)。 * scratch *缓冲区默认是从lisp-interaction-mode编辑的,这有点不同。

它并不像slime那样功能齐全(elisp的社区比普通的lisp小得多),但绝对有效。您必须浏览文档并尝试使用该模式以查看可以使用的功能类型。

答案 3 :(得分:10)

如上所述,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是否有类别?

答案 4 :(得分:6)

  • 我通常使用emacs-lisp-mode优先于*scratch*的默认模式。 99%的时间我想保存即使丢失的交互式测试(至少是暂时的),所以我经常使用*.el文件而不是*scratch*

  • 冰柱在与Emacs Lisp交互时可以提供很多帮助。这里列出的方式太多了。以下是两个可以提出想法的概述:

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

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

答案 5 :(得分:1)

我想将此添加到您.emacs

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

会非常有帮助。

答案 6 :(得分:0)

wrap_content

调试功能 我认为这些是elisp的最佳调试工具。