在Emacs启动期间运行我自己的代码

在Emacs启动期间运行我自己的代码,emacs,Emacs,假设我在~/bin/hello.el中有自己的elisp代码 ~/.emacs文件在启动时有以下代码要运行hello.el (add-to-list 'load-path "~/bin/elisp") (require 'hello) 但是,我得到以下错误消息 警告(初始化):加载“/Users/smcho/.emacs”时出错: 错误:未提供必需的功能“hello” 这有什么问题吗?hello.el是否提供hello?它应该以开头(提供'hello)。看。(加载“hell

假设我在
~/bin/hello.el
中有自己的elisp代码

~/.emacs
文件在启动时有以下代码要运行
hello.el

(add-to-list 'load-path "~/bin/elisp")
(require 'hello)
但是,我得到以下错误消息

警告(初始化):加载“/Users/smcho/.emacs”时出错:

错误:未提供必需的功能“hello”


这有什么问题吗?

hello.el是否提供hello?它应该以
开头(提供'hello)
。看。
(加载“hello.el”)
有效吗?

您必须在LISP代码中添加类似的内容:


(提供“hello”

如果您将
~/bin/elisp
添加到
加载路径
,则Emacs将无法在
~/bin
中找到文件。在这种情况下,Emacs将尝试加载
~/bin/elisp/hello.el
,如果找不到,它将在
加载路径的其他部分中查找名为
hello.elc
hello.el
(按该顺序)的文件


另外,正如其他人所提到的,
hello.el
需要在其中包含一个
(提供“hello”)
(通常在末尾)。应在elisp代码的第一行添加一个(提供“hello”)。谢谢。(需要)和(加载)有什么区别?(加载)加载文件。(需要)在使用功能时加载该功能。一个文件可以提供多个特性,但我认为在使用该特性之前不会对文件中的代码进行评估(请不要引用我的确切语义)。需求本质上是说我需要这个,找出它在哪里,如果需要的话,它已经准备好了。实际上,约定(提供“特征”)应该是Emacs LISP源文件的最后一行。顺便说一下,您可能会考虑重新组织代码:而不是A/Emacs,Emacs将自动查找并加载~/.Emacs.d/init.el,因此您可以将所有elisp放入~/.Emacs.d.@sanityinc:这与我的理解不同。你能查一下吗?>是的,它是不同的,但我不确定你的意思是什么。以下是我的配置(不带~/.emacs),以防有帮助: