使用 init.el 和软件包安装在新机器上设置 emacs

jan*_*neb 3 emacs installation startup

像许多 emacs 用户一样,我有自己的 emacs 配置文件,~/.emacs.d/init.el用于按照我喜欢的方式配置 emacs。因此,当我开始使用新机器时,我会将 emacs 配置文件复制到其中。现在的问题是我的 emacs 配置文件依赖于我通过 emacs 包管理器安装的一些包,但由于缺少包,我无法成功安装包。

我当然可以在没有配置文件 ( emacs -q) 的情况下启动 emacs,但问题是只有默认存储库可用,所以我实际上无法安装我需要安装的包才能使用我的配置文件成功启动 emacs。

所以我通常做的就是暂时注释掉我的 emacs 配置文件中的内容,以便我能够成功安装软件包,然后我可以取消注释并使用完整配置重新启动 emacs。但这很麻烦,通常需要尝试几次才能注释掉所有需要的东西。当然一定有我缺少的更好的方法吗?

Iva*_*aev 7

您可以做的就是声明您使用的包。然后添加一些每次打开 Emacs 时运行的代码。它检查该列表中的每个包是否已安装。如果不存在,则会安装它。

我的配置文件中的一个简单示例:

;; first, declare repositories
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("marmalade" . "http://marmalade-repo.org/packages/")
        ("melpa" . "http://melpa.org/packages/")))

;; Init the package facility
(require 'package)
(package-initialize)
;; (package-refresh-contents) ;; this line is commented 
;; since refreshing packages is time-consuming and should be done on demand

;; Declare packages
(setq my-packages
      '(cider
        projectile
        clojure-mode
        expand-region
        helm
        jinja2-mode
        magit
        markdown-mode
        paredit
        wrap-region
        yaml-mode
        json-mode))

;; Iterate on packages and install missing ones
(dolist (pkg my-packages)
  (unless (package-installed-p pkg)
    (package-install pkg)))
Run Code Online (Sandbox Code Playgroud)

你很好。