关于/.emacs.d的初始化问题

当通过package-list-packages安装后的包手动删除后,重新打开emacs,package是没有重新安装的。 而于GitHub中clone了别人的配置文件后,为何可以实现从mlpa中自动下载package?具体是如何实现的呢?

通过包管理安装的软件包是会向配置文件里写一些信息的,比如 init.el 文件,当然了,你也可以自己手动指定要写入的文件的位置,写入的内容大概是这样的:

(package-selected-packages
   '(projectile counsel yasnippet-snippets wgrep web-mode use-package treemacs solarized-theme smex slime paredit multiple-cursors lsp-ui lsp-java key-chord ivy-xref iedit goto-chg geiser exwm expand-region eglot cquery company-quickhelp company-lsp cmake-mode auto-yasnippet))

这是 emacs 用来记忆你已经安装的插件的,如果你的插件是手动删除并且删除之后依旧想要通过包管理进行安装的话,可以找到这个配置删除掉你手动删掉的插件的名字

自动安装的话可以像下面这样,当然,前提是你已经配置过了 melpa 的地址

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

简单解释下就是首先判断下 use-package 这个包有没有安装,没有安装的话,刷新一下(就像你执行package-list-packages 时更新那样),然后通过 package-install 这个函数安装 use-package

如果你已经安装好了 use-package 的话,可以通过 use-package 自动安装 package,对 use-package 感兴趣的话可以去查看其官方文档,论坛里也有人对其进行了翻译:

4 个赞