emacs功能无法正常工作,但没有错误消息

时间:2016-12-20 18:56:57

标签: emacs

这是我第一次尝试为Emacs创建一个函数。

我创建了这个简单的函数:

(defun open-init-file ()
  "Opens the ~/.emacs.d/init.el file"
  (find-file user-init-file))

我把它放进去了:

 ~/.emacs.d/init.el

然后我跑了" eval-buffer"。

我没有收到任何错误消息。然而,我无法调用此功能。如果我输入M-x并输入" open-init-file"我被告知没有与该名称匹配的功能。

即使我把这个函数放在自己的缓冲区中,把光标放在最后,然后运行eval-last-sexp,这个函数仍然不会在Emacs中看到。

然而,如果我把它放在一个缓冲区中:

(find-file user-init-file)

如果我将光标放在此末尾然后运行eval-last-sexp,那么这就像我期望的那样工作。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

你应该和interactive函数(a.k.a。命令)

(defun open-init-file ()
    "Opens the ~/.emacs.d/init.el file"
    (interactive)
    (find-file user-init-file))

答案 1 :(得分:3)

正如yordom所说,你需要这样做:

(defun open-init-file ()
    "Opens the ~/.emacs.d/init.el file"
    (interactive)
    (find-file user-init-file))

您在致电open-init-file时找不到M-x的原因是您已定义function,而不是command。所有命令都是函数,但不是相反。 :)