2

我一直在我的dotfiles 存储库中使用 Git 子模块来跟踪我使用的每个 Emacs 包。但是,由于 Emacs 24 内置了包管理器,我想切换到更官方和更易于使用的方法。

我的切换问题:使用我当前的 Git 子模块方法,dotfiles 存储库的任何克隆都保证包含所有引用的附加组件。 这个包管理器中是否有允许同步包的内置功能,以便 Git 存储库的任何拉取都将包含必要的包(或者它们都可以使用单个命令安装)?

如果没有这样的内置功能,是否有一个“post-package-install”挂钩,我可以使用它来维护基于文本的包列表(稍后使用自定义命令读取,该命令将包安装在列表中)?本质上,我想将我的包/包列表保持在版本控制之下,以便它可以在计算机之间移植。

4

1 回答 1

4

el-get按照 kindahero 的建议进行了尝试,但这对我来说效果不太好……它没有正确加载——要么是代码中的一些错误,要么是我缺乏 Emacs Lisp 技能(更可能是后者)。

我偶然发现了Emacs Prelude项目,在浏览源代码时发现了一段非常简单的代码:

(require 'package)
(add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/") t)
(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

(defvar prelude-packages
  '(auctex clojure-mode coffee-mode deft gist haml-mode
                 haskell-mode magit markdown-mode paredit projectile
                 sass-mode scss-mode yaml-mode yari yasnippet)
  "A list of packages to ensure are installed at launch.")

(dolist (p prelude-packages)
  (when (not (package-installed-p p))
    (package-install p)))

我为自己的目的无耻地偷了这个,而且效果很好。我通过切换到包管理器(使用 Marmalade repo)删除了几乎所有的子模块。

于 2011-10-16T00:31:18.917 回答