leaf.el: yet another use-package

作者说是要解决 use-package 的一些问题:

leaf solves the stress that I feel while using the use-package for 2.5 years. By developing from scratch, we have a cleaner and more predictable implementation than use-package .

不知为何要拆分成两个项目:

我看它的 keyword 倒是比 use-package 多了不少,有 :hydra :el-get 等等,感觉有点用。不过 use-package 也有相应的第三方 use-package-hydrause-package-el-get 包,后边这个刚刚试用了一下,但是不太完善,就顺手给扩充了一点功能。

不论 leaf 是不是真的有如它声称的解决了问题,但它满屏 (prog1 ...) 已经引起了我稍稍的不适。

除了多了些内建的关键字,还没看出有多大优势。use-package的keyword也有很多第三方包扩展。我唯一感兴趣的是 feather,支持异步(利用 async-await),替代内置 package.el(但 paradox 也支持异步,用的 async,这个需要比较下。)稳定性也有待观察,先观望吧~~~

BTW:作者是个🇯🇵人?

1 个赞

好像是和我一起维护helm-swoop的那位,想法挺多,与本懒 :dog: 形成了鲜明对比。

应该怎么写比较好?

品质上目前应该是 use-package 胜。

是的,我也是从一片日文文章上看到这个包的介绍。

的确

既然这么说了,我想催更一下 sly-cl-indent

另外,request.el 的作者也是霓虹人,昨天在它的 issue 列表看到一个吵架贴: Leadership and philosophy · Issue #172 · tkf/emacs-request · GitHub ,原因就是写 leaf.el 这位 @conao3 提了一个修改缩进的 pr。

个人喜好吧,(if cond (progn ...)) 我会忍不住改成 (when cond ...)

加上配置代码在形式上比较雷同,所以越发显得 (progn ...) 多了。

从它示范的代码看,每一节都是以下这种形式:

((leaf macrostep
       :ensure t
       :bind ("C-c e" . macrostep-expand))
 (prog1 'macrostep
   (unless (fboundp 'macrostep-expand) (autoload #'macrostep-expand "macrostep" nil t))
   (declare-function macrostep-expand "macrostep")
   (leaf-handler-package macrostep macrostep nil)
   (leaf-keys (("C-c e" . macrostep-expand)))))
  1. 包名出现了两次,略显累赘。
  2. prog1 与前面缩进在同一级,看起来像是并列关系,我理解应该是从属关系,再缩进一层(即使仍然使用 progn 也 )感觉比较顺眼:
((leaf macrostep
   :ensure t
   :bind ("C-c e" . macrostep-expand)
   :config
   (progn
     (unless (fboundp 'macrostep-expand) (autoload #'macrostep-expand "macrostep" nil t))
     (declare-function macrostep-expand "macrostep")
     (leaf-handler-package macrostep macrostep nil)
     (leaf-keys (("C-c e" . macrostep-expand))))))

我也很不解为什么要这样设计

想多了,helm最近改了helm-M-x的部分代码,让fuz对helm-M-x完全失效了,我正头疼这个不会改哩。

作者在推elpa,吃瓜ing https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00741.html

已经进 elpa 了, 也不知道 use-package 不知道什么时候能进,唉。

进elpa有啥好呢?好多都不愿意进

不用配置melpa就能安装。

这个算不得什么优势吧,无非是默认值的问题。

有一说一,默认的力量还是很强的。我就喜欢尽量都用默认。

Emacs用默认值,那简直找罪受啊

Emacs默认还是有好东西的,另外掌握Emacs默认以后,ssh到服务器上就不需要用vim了…

1 个赞