15

我对标准化我们中的一些人(约 5 人)使用的 emacs 配置很感兴趣。

如果我们知道我们想要的包集,有没有办法从可以包含在脚本中的 lisp 函数安装 ELPA 包?我能找到的只是如何以list-packages图形方式调用和安装各个包。

4

4 回答 4

9

您需要的是使用package-install功能,例如:

(mapc 'package-install install-list)

install-list变量应包含您要安装的软件包的名称列表。

于 2013-10-12T06:45:05.367 回答
4

您可能还想看看cask它允许您在使用此处Cask描述的 DSL命名的文件中声明要安装的包。然后从命令行转到目录并运行. 它将安装文件中声明的所有包。caskCask

在您的 init 文件中,您需要添加以下行以使用 cask 安装的软件包。

(require 'cask "~/.cask/cask.el")
(cask-initialize)
于 2014-03-06T12:17:16.007 回答
4

您可以做的另一件事是制作自己的软件包,该软件包取决于您要安装的其他软件包。然后安装那个包。

可以使用以下文件从文件安装软件包:

M-x package-install-from-file

或者您可以使用包含的软件包制作自己的软件包存档,您可以使用 elpakit 来做到这一点。

您也可以从命令行执行此操作:

emacs -e "(progn (package-initialize)(package-install 'packagename))"

如果您愿意,可以从操作系统命令行安装。

于 2014-04-19T21:05:29.243 回答
2

此外,您可以通过以下方式获取已安装 ELPA 软件包的列表

(defun eab/print-0 (body)
  "Insert value of body in current-buffer."
  (let ((print-length nil)
        (eval-expression-print-length nil))
    (prin1 `,body (current-buffer))))

(defun eab/package-installed ()
  "Get the list of ELPA installed packages."
  (mapcar (lambda (x) (car x)) package-alist))

(eab/print-0 (eab/package-installed))

和 el-get 包一样

(defun eab/el-get-installed ()
  "Get the list of el-get installed packages."
  (mapcar 'intern
      (el-get-list-package-names-with-status "installed")))

(eab/print-0 (eab/el-get-installed))
于 2013-10-12T08:31:33.920 回答