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 只是目录。造成混淆的原因可能是,当您 loading 特定库时,您可以(通常应该)省略扩展,让 Emacs 选择使用哪一个。

以上是关于add-to-list '加载路径似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章

“上传路径似乎无效”。 Codeigniter文件上传不起作用[关闭]

React JS路由路径不起作用[重复]

将 NSImage 保存到路径不起作用

Django url 似乎不起作用

Laravel 供应商自动加载不起作用

使用 getDownloadURL() 从 firebase 存储加载图像不起作用