【发布时间】:2012-08-09 00:40:41
【问题描述】:
我在this link 看到 emacs prelude 如何确保在 emacs 启动时安装一组软件包。我想知道是否可以以某种方式扩展变量 prelude-packages 以添加一些其他包,而不更改 prelude-packages.el 文件?
除非我想知道如何定义在启动时安装的软件包列表,如果它们当前没有安装的话。
【问题讨论】:
标签: emacs elisp emacs-prelude
我在this link 看到 emacs prelude 如何确保在 emacs 启动时安装一组软件包。我想知道是否可以以某种方式扩展变量 prelude-packages 以添加一些其他包,而不更改 prelude-packages.el 文件?
除非我想知道如何定义在启动时安装的软件包列表,如果它们当前没有安装的话。
【问题讨论】:
标签: emacs elisp emacs-prelude
您可以在 Prelude 的personal/ 目录中放置一个.el 文件。 Prelude 按字母顺序加载它在其中找到的任何 .el 文件。以下是我的personal/00-packages.el 文件的内容:
(require 'package)
(add-to-list 'package-archives
'("marmalade" .
"http://marmalade-repo.org/packages/"))
(package-initialize)
;; My packages
(setq prelude-packages (append '(
drupal-mode
nginx-mode
) prelude-packages))
;; Install my packages
(prelude-install-packages)
“00”被添加到文件名中,以确保在所有个人定制之前加载文件。将您需要的任何新包添加到附加到 prelude-packages 的列表中。
此外,如果您想使用 MELPA 或 Marmalade 中不可用的任何模式,您只需将模式的文件放到个人文件夹中,Prelude 就会在加载时将其拾取。如果对该模式有任何自定义,只需创建另一个 .el 文件并在其中添加 Emacs Lisp 代码。
【讨论】:
(prelude-require-packages '(some-package some-other-package))
如果你有几个包。或者,如果您只想添加一个包:
(prelude-require-package 'some-package)
如果你愿意,你仍然可以在一个变量中维护你的包列表:
(setq my-packages '(drupal-mode nginx-mode toto-mode)
(prelude-require-package my-packages)
【讨论】:
在您的 .emacs 文件中,您可以添加这样的代码(与您发送的链接中的代码非常相似)来检查是否安装了每个包,如果没有安装它:
(dolist (package '(eredis anything erlang elnode))
(unless (package-installed-p package)
(package-install package)))
在回答您的问题时,您没有理由在前奏代码运行后不能这样做。
【讨论】: