add-to-list '加载路径似乎不起作用
Posted
技术标签:
【中文标题】add-to-list \'加载路径似乎不起作用【英文标题】:add-to-list 'load-path doesn't seem to workadd-to-list '加载路径似乎不起作用 【发布时间】:2011-08-02 17:19:54 【问题描述】:每当我看到某个 emacs 软件包的安装说明时,它总是建议使用 add-to-list 'load-path
它对我来说永远不起作用。出于某种原因,我必须使用load-file
。例如,这将不起作用:
(add-to-list 'load-path "~/.emacs.d/jade-mode")
(require 'sws-mode)
(require 'jade-mode)
(add-to-list 'auto-mode-alist '("\\.styl$" . sws-mode))
(add-to-list 'auto-mode-alist '("\\.jade$" . sws-mode))
但这会起作用:
(load-file "~/.emacs.d/jade-mode/sws-mode.el")
(load-file "~/.emacs.d/jade-mode/jade-mode.el")
(require 'sws-mode)
(require 'jade-mode)
谁能告诉我为什么? 编辑:我在 MAC OS X 10.5 上使用 Carbon Emacs
【问题讨论】:
当您说它“不起作用”时,它是如何失败的?是不是require
调用失败了?
您是否使用 eval-buffer 或 eval-expression 评估每个表达式?或者放在你的。然后保存 Emacs 文件并重新启动?
【参考方案1】:
也许问题是当require
搜索load-path
列表中的条目时,前导波浪号('~')没有展开。考虑使用the expand-file-name
function 准备您的条目以供require
后续使用:
(add-to-list 'load-path (expand-file-name "jademode" "~/.emacs.d"))
或
(add-to-list 'load-path (expand-file-name "~/.emacs.d/jademode"))
了解您在哪个操作系统上使用了哪些 Emacs 会有所帮助。
【讨论】:
是的,添加到加载路径时需要使用expand-file-name。【参考方案2】:我不是 100% 确定,但我猜这个列表没有被实例化,因此你不能在加载路径列表中添加任何东西,我只是用
(setq load-path (cons (expand-file-name "~/.emacs.d/lisp")
load-path))
【讨论】:
【参考方案3】:第一个答案对我不起作用。添加目录路径,而不是单个 .el 文件,对我有用,即:
(add-to-list 'load-path (expand-file-name "~/.emacs.d"))
【讨论】:
你说得对;但没有人建议将单独的 .el 文件添加到加载路径。您的答案与接受的答案没有什么不同。另外,don't put ~/.emacs.d in your load-path. 我误会了。我以为jademode的意思是jademode.el,但我猜它是一个目录名。并感谢您对另一篇文章的引用。 啊,这就解释了。不,load-path
只是目录。造成混淆的原因可能是,当您 load
ing 特定库时,您可以(通常应该)省略扩展,让 Emacs 选择使用哪一个。以上是关于add-to-list '加载路径似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章