Emacs中有各种很酷的编程语言模式,用elisp编写,但显然没有特别支持elisp本身。
由于slime不适用于elisp,我问自己是否所有elisp代码都只是在 scratch 缓冲区中被黑了? 在编写elisp时是不是需要像粘液这样的东西,还是根本就不存在?是否有人使用ECB和语义进行更大的elisp项目?
答案 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 f
,C-h v
,C-h S
),运行代码-the-fly(C-M-x
,M-:
)直接在正在运行的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交互时可以提供很多帮助。这里列出的方式太多了。以下是两个可以提出想法的概述:
答案 5 :(得分:1)
我想将此添加到您.emacs
(define-key emacs-lisp-mode-map (kbd "M-.") 'find-function-at-point)
会非常有帮助。
答案 6 :(得分:0)
wrap_content
调试功能 我认为这些是elisp的最佳调试工具。