如何自动提供交互式命令?

时间:2015-09-12 13:33:53

标签: emacs

我觉得这个问题是超级基本的,但我还没有弄清楚如何在Emacs会话中自动制作一个简单的交互式命令...

这是~/random/exploration/exploration.el

;;; Code:

;;;###autoload
(defun exploration ()
  "a test package"
  (interactive)
  (message "hi"))

(provide 'exploration)
;;; exploration.el ends here

这是init.el

(add-to-list 'load-path (expand-file-name  "~/random/exploration"))

exploration不能通过M-x获得。在出现之前我必须M-: (require 'exploration)

如何自动使用此命令,就像插件一样?我一直在研究load-pathautoload的文档,但无法弄清楚如何实现这一目标。

我想这样做,所以我可以将其他功能放在exploration.el中,并且只有在用户第一次M-x exploration之后才能使用它们。这意味着exploration需要自动加载。

对我在此处所做的任何裁员的评论,或者我自己如何调试这些内容的提示也会受到欢迎。

3 个答案:

答案 0 :(得分:1)

您必须加载文件,而不是将其添加到load-path,或者在将文件夹添加到(require 'exploration)后,您需要将init.el添加到load-path文件中

答案 1 :(得分:1)

使用autoload功能:

(autoload 'exploration "exploration")

如果不修改load-path,则需要绝对路径作为第二个参数。

或者,通过MELPA(假设您可以在那里获得)或在package-install-file本地安装您的脚本作为包。这将为您自动加载。

答案 2 :(得分:1)

;;;###autloload评论只是一个评论。当构建Emacs(或者适当的智能包管理器将您的代码作为包安装)时,它会生成一个实际的自动加载,但除此之外,您需要自己完成。

(autoload 'exploration "exploration" nil t)

在第二个参数中指定显式路径,您实际上不需要load-path操作来完成您描述的内容。

另见https://www.gnu.org/software/emacs/manual/html_node/eintr/Autoload.html