我使用prelude作为基本Emacs配置。 我已经从软件包管理器安装了很多软件包,我想在另一台机器上使用我的设置。
我不想携带已安装的软件包,也不想手动创建列表。
将所有已安装的软件包列表保存到prelude-package.el或任何其他文件中的方法是什么,这样当我将此配置带到我的其他计算机时,它们会在首次使用时自动安装到那里?
答案 0 :(得分:66)
您可以从变量package-activated-list
获取当前安装的软件包列表(不包括内置软件包)。要在启动时自动安装它们,请参阅此问题:how to automatically install emacs packages by specifying a list of package names?
更具体地说,如果你执行 Ch v package-activated-list ,复制显示的值,并将其作为值prelude-packages
插入,emacs将自动确保安装这些包在启动时。
答案 1 :(得分:14)
规范方法论是最好的(由ataylor描述)。这是一种更笨拙的方法。
M-x list-packages 。 C-s已安装,直到找到第一行已安装的软件包。开始使用 C-SPC 进行选择。往下走,直到你到达内置包裹。使用 M-w 复制。新缓冲区的 C-x b 。粘贴 C-y 。 C-x C-s 以保存文件。
我看到的唯一优势是,它更具描述性。显示您的包裹的小描述。当你安装一些软件包而忘记它时很有用。
答案 2 :(得分:3)
如how to automatically install emacs packages by specifying a list of package names?所述,最好还记录所需软件包的版本。为此,您可以使用以下功能:
(NAME VERSION)
这将为您提供package.el
对的列表。不幸的是,我还没有找到安装特定版本软件包的方法。似乎(defun install-packages-with-specific-versions (package-version-list)
"Install the packages in the given list with specific versions.
PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists,
where NAME is a symbol identifying the package and VERSION is
the minimum version to install."
(package-download-transaction
(package-compute-transaction () package-version-list)))
总是抓住最新的。我现在正在做的是:
package.el
我已经编写了一个更长的函数来安装与确切版本号匹配的软件包,但它失败了,因为默认情况下{{1}}只检索每个软件包可用的最新版本。 gist
答案 3 :(得分:0)
如上所述,使用emacs正常模式。这是另一种邪恶模式:
M-x个列表软件包; / installed(将突出显示); v(用于可视模式); j(选择它们); y(复制它们);打开一个新的缓冲区并将其粘贴。