我需要在编辑器上实现一些新功能。我选择了 Emacs——虽然我的主要编程知识是 Java 和 C——我想添加一些功能并编辑 Emacs Editor 的一些现有功能。我查看了它的源代码,我有点迷茫。我想知道是否有人可以给我一些关于从哪里开始以及是否有任何教程可以提供帮助的建议?
PS 一个具体的问题是如何开始编写具有所有新功能和行为的新模式?或者我如何禁用一些基本功能,如复制/粘贴?
干杯
Emacs Lisp 编程简介 http://www.gnu.org/software/emacs/emacs-lisp-intro/ 或输入 emacs:
M-: (info "(eintr)Top") RET
Emacs Lisp 手册 http://www.gnu.org/software/emacs/manual/elisp.html 或输入 emacs:
M-: (info "(elisp)Top") RET
有一些专门针对编写主要模式的教程。
除此之外,在 Emacs 中编写模式只是编写 Lisp 函数。
我要指出的一件事是,您在这里提议做的事情可能毫无意义。如果您将权限系统实现为主要模式,用户只需切换模式即可将其关闭。如果此权限系统的目的是避免破坏编辑,那很好(在这种情况下,我假设您的用户会配合您的目标)。如果您期望您的用户具有对抗性,那么 Emacs 是错误的工具。
这是关于定义主要和次要模式的手册部分:
C-hig (elisp) Modes
RET
从现有模式派生出一种新模式通常是有益的,它提供与您需要的类似的基本功能。
如果没有足够匹配的东西,那么检查源代码中提供某些相同行为的模式将是下一个最好的事情。
我注意到“派生”一个模式nil
似乎是创建一个全新的主要模式的常用方法。这样,您仍然可以获得define-derived-mode
宏的所有好处。