在学习新的编程语言时,“阅读源代码”是专家们收到的一个常见建议。然而,像emacs这样庞大的系统,由许多人构建了数十年,初学者想出哪些库是惯用的Elisp编程的最佳例子并不容易。因此,我想就以下标准提出一些建议:
惯用的elisp编程风格
遵守emacs编程指南
根据emacs指南巧妙地使用cl-package
巧妙使用eieio-package
单个.el文件库的示例性组织
多文件/多包程序库的示例性组织
您认为重要的任何标准
给出为什么你推荐用于自动教学研究的某些库的原因肯定会为Emacs lisp编程中的初学者提供信息。
答案 0 :(得分:4)
正如Trey所说,使用Emacs本身的elisp来学习。我通常做两件事之一:
1)如果我想了解如何使用特定功能,我会打开一个dired
窗口并执行:
% g foobar
其中foobar
是我有兴趣学习如何使用的函数的名称。这将标记所有使用foobar
的文件然后我去搜索它们以查看如何调用它,在什么上下文中调用它等等。
2)如果我想弄清楚如何做某事,并且我知道一种类似的模式,我会去查看该模式的源代码,看看他们是如何做到的。如果您不知道从哪里开始,但是您知道如何执行您想要做的事情,那么一个方便的事情就是通过键绑定来查找它。例如,在dired
缓冲区中,执行以下操作:
C-h k % g
这将提出:
% g runs the command dired-mark-files-containing-regexp, which is an
% interactive compiled Lisp function in `dired.el'.
It is bound to % g, <menu-bar> <regexp> <mark-cont>.
(dired-mark-files-containing-regexp regexp &optional marker-char)
Mark all files with contents containing regexp for use in later
commands. A prefix argument means to unmark them instead.
`.' and `..' are never marked.
单击上面文本中的dired.el
(在emacs缓冲区中)将打开源代码并直接转到该功能定义。这是一个很好的学习方法。
不要忘记使用elisp调试器,以便在代码逐步执行时查看正在发生的事情。您可以使用edebug-defun
标记用于调试的代码,然后照常调用它,此时emacs会引导您完成代码。
答案 1 :(得分:3)
我推荐的源代码是Emacs本身的源代码。从简单的东西开始(双关语),然后看看其他文件。
M-x find-library simple RET
我认为为什么Emacs自己的lisp代码是Emacs lisp的一个很好的例子是不言自明的。