首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >emacs-lisp的主模式名称

emacs-lisp的主模式名称
EN

Stack Overflow用户
提问于 2013-10-01 22:05:56
回答 3查看 272关注 0票数 1

我想更快地加载emacs init文件,所以我使用了“eval-after- load”。

例如,当我加载clojure文件时,我只是将

代码语言:javascript
复制
(eval-after-load 'clojure-mode
    'do-something)

它起作用了。

但当我尝试的时候

代码语言:javascript
复制
(eval-after-load 'emacs-lisp-mode
    'do-something)

它不起作用。我想知道emacs-lisp的正确的主要模式名称。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-10-01 22:35:51

请阅读documentation of eval-after-load

加载后求值库表单

此函数安排在每次加载文件库时,在加载文件库结束时计算表单。如果库已经加载,它会立即计算form。别忘了引用表格!

…库也可以是一个特征(例如,一个符号),在这种情况下,在调用(provide LIBRARY)的任何文件的末尾都会计算form。

您必须传递定义主模式的文件或库的名称作为参数。

虽然有些模式是在同名文件中定义的(例如clojure-mode.el中的clojure-mode ),但许多文件有不同的名称,特别是在实际定义多个主模式的情况下。

emacs-lisp-mode是在lisp-mode.el中定义的,还有一些用于Emacs Lisp编辑的其他模式(例如,lisp-mode作为一种通用的Lisp语言模式,或者lisp-interaction-mode用于*scratch*缓冲区)。

因此,使用(eval-after-load 'lisp-mode …)

另外,你必须给出一个单一的sexp作为第二个参数,所以你可能想要使用(eval-after-load 'lisp-mode '(do-something)),来调用函数do-something

如果您使用的是Emacs的快照构建,请使用with-eval-after-load,即(with-eval-after-load 'lisp-mode (do-something))。它允许多个表单,并且不需要引用。

票数 4
EN

Stack Overflow用户

发布于 2013-10-01 22:18:37

只需用M-:对变量major-mode求值即可。它实际上是emacs-lisp-mode。请注意,*scratch*实际上是在lisp-interaction-mode中。

至于你想要做什么,使用(eval-after-load "lisp-mode")

票数 2
EN

Stack Overflow用户

发布于 2013-10-02 09:14:49

正如@lunaryom所解释的那样,传递给eval-after-load的arg不是一个函数名,而是一个特性名,它基本上是一个文件名。因此,您需要找到从中加载函数的文件的名称。我们可以提供像eval-after-defun这样的功能,实际上这样做可能是一个好主意。如果你想要这样的东西,可以通过M-x report-emacs-bug请求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19118343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档