9

我在此链接中看到 emacs prelude 如何确保在 emacs 启动时安装一组软件包。我想知道是否可以在prelude-packages不更改文件的情况下以某种方式扩展变量以添加一些其他包prelude-packages.el

除非我想知道如何定义在启动时安装的软件包列表(如果当前未安装)。

4

3 回答 3

8

您可以在 Prelude.el的目录中放置一个文件。personal/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 代码。

于 2013-01-17T13:20:47.453 回答
6

Prelude 推荐使用

(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)
于 2015-02-24T15:51:52.700 回答
1

在您的 .emacs 文件中,您可以添加这样的代码(与您发送的链接中的代码非常相似)来检查每个包是否已安装,如果没有安装它:

(dolist (package '(eredis anything erlang elnode)) 
  (unless (package-installed-p package)
    (package-install package)))

在回答您的问题时,您没有理由在前奏代码运行后不能这样做。

于 2012-08-09T23:02:04.407 回答