才疏学浅,实在不知道怎么写这种配置。 就是像各种大神配置一样,如果缺少插件会自动安装。如果插件已存在则直接加载。
use-package
不知道怎么写就问啊,你的问题具体一点,哪里不懂
1 个赞
完全不懂……………… 因为我google的一大堆函数,都不知道怎么办……
然后就参考下他们是如何实现的?
不懂就直接抄,spacemacs、prelude、山人的配置、陈斌的配置、purcell的配置……
好吧……我还是抄去……
(use-package PACKAGENAME
:defer ;; 是一个数字就是推迟几秒加载
:init ;; 在use-package 之前先加载的配置,一般是一些hook
:bind ;; keybind,有了这个的话就没必要 defer t
:config ;; 加载之后的配置主体。把比较耗时间的部分写在这里明显地可以减少启动时间
)
2 个赞
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.emacs-china.org/gnu/")
("melpa" . "http://elpa.emacs-china.org/melpa/")))
(setq my-package-list ;启动时自动安装的插件
'(
find-file-in-project
web-mode php-mode
ivy ivy-rich counsel hydra swiper avy
counsel-etags dumb-jump
magit
))
(unless package-archive-contents
(package-refresh-contents))
(dolist (package my-package-list)
(unless (package-installed-p package)
(package-install package)))
emacs启动时自动安装插件是这么写的吧,这样成功了不过emacs每次启动时都要连网查询,网络不好时要卡半天,使emacs启动速度降低好多,感觉不适合我这样经常性重启emacs的用户
-
TODO 但这个功能也非常有用,应该用上emacs的多线程功能,把上面代码放在另一个线程里面执行,这样不影响emacs启动速度,不阻塞当前页面输入…有空在研究。
不知道有没有大佬实现过类似的功能?
利用use-package
(use-package package-name
:ensure t)
1 个赞
use-package 加个:ensure t 不就可以了嘛。
确实这个就可以了,没有必要想多线程的事,我这场景是新系统全新安装emacs,把配置文件复制过去想让其自动安装插件,这时候是没有use-package的,看来需要把use-package移出elpa目录,作为配置文件的一部分
:diminish
是啥作用啊?
把刷新的代码放到对包检查的代码里好了,可以避免不缺包的情况下联网查询的操作。
(dolist (package my-package-list)
(unless (package-installed-p package)
(unless package-archive-contents
(package-refresh-contents))
(package-install package)))
1 个赞
哦 多谢 多谢
哈哈哈,直接读他们的配置源码。只读你感兴趣的这部分就好。太多了,可能会怕。
感谢,用了你的代码,完美解决这个问题