Che*_*evy 12 package-management emacs elpa cmake
我刚刚cmake-mode使用以下命令在 Emacs 24 中安装了该软件包:
M-x package-install cmake-mode
Run Code Online (Sandbox Code Playgroud)
我可以在以下位置看到包~/.emacs.d/elpa/cmake-mode-20110824,并且可以使用以下Commentary:部分的说明加载它~/.emacs.d/elpa/cmake-mode-20110824/cmake-mode.el:
;; Add this code to your .emacs file to use the mode:
;;
;; (setq load-path (cons (expand-file-name "/dir/with/cmake-mode") load-path))
;; (require 'cmake-mode)
;; (setq auto-mode-alist
;; (append '(("CMakeLists\\.txt\\'" . cmake-mode)
;; ("\\.cmake\\'" . cmake-mode))
;; auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)
然而,这与ELPA 的 EmacsWiki 页面上的使用说明相矛盾:
...在加载 init.el 后初始化包。这意味着您不应该将特定于包的初始化放入您的 init.el ...
我倾向于同意此说明,因为在我的~/.gnu-emacs文件中添加了一行,例如:
(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/")
Run Code Online (Sandbox Code Playgroud)
很丑,如果我升级包会坏。但是,如果没有这条线,我将无法使用cmake-mode.
我在这里错过了什么吗?
笔记:
package-enable-at-startup,它的价值是t.user-emacs-directory值是"~/.emacs.d/" (感谢@lawlist 的建议)package-user-dir 价值是 "~/.emacs.d/elpa"我使用 marmalade-repo 安装了 cmake-mode,并查看了 cmake-mode-autoloads.el。看来作者做出了一个有意识的决定,not将设置所需的所有内容都包含在自动加载文件中。但是,cmake-mode.el 第 25 至 30 行的说明是正确的,您在问题中引用了这些说明。如果您使用第 25 至 30 行并正确设置路径,则不需要额外的代码行,例如(add-to-list 'load-path "~/.emacs.d/elpa/cmake-mode-20110824/").
显然,您不想使用/dir/with/cmake-mode-- 您希望~/.emacs.d/elpa/cmake-mode-20110824在结尾处不使用正斜杠。
(setq load-path (cons (expand-file-name "~/.emacs.d/elpa/cmake-mode-20110824") load-path))
(require 'cmake-mode)
(setq auto-mode-alist
(append '(("CMakeLists\\.txt\\'" . cmake-mode)
("\\.cmake\\'" . cmake-mode))
auto-mode-alist))
Run Code Online (Sandbox Code Playgroud)
如果上面的代码不起作用(使用您自己的路径),您可能需要删除 c-make-mode... 目录并尝试重新安装。