我觉得这个问题是超级基本的,但我还没有弄清楚如何在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-path
和autoload
的文档,但无法弄清楚如何实现这一目标。
我想这样做,所以我可以将其他功能放在exploration.el
中,并且只有在用户第一次M-x exploration
之后才能使用它们。这意味着exploration
需要自动加载。
对我在此处所做的任何裁员的评论,或者我自己如何调试这些内容的提示也会受到欢迎。
答案 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