想折腾折腾leaf了 看看有没有大佬用
折腾了几天,给我的感觉是 leaf 每个关键字都很清晰一致,就是可以预测到生成出来的代码是个啥顺序,啥效果。之前用 use-package 的时候感觉是黑魔法,不太清楚背后做了什么事情。
而且有个自动转换工具 GitHub - conao3/leaf-convert.el: Convert Elisp config sexp to leaf form 用这个甚至还帮我纠正了一些错误用法。
这是相关的讨论 What is difference between use-package and leaf? · Issue #257 · conao3/leaf.el · GitHub
讨论里给出的这个宏比较实用,可以展开给你看效果。
(defmacro p (form)
"Output expanded form of given FORM."
`(progn
(pp (macroexpand-1 ',form))
nil))
可能变为内置包
关键词够多
commands
- leaf-key-describe-bindings :: 展示绑定的键
- leaf-expand :: 展开 leaf 宏
:mode-hook
关键词生成的函数可以用 find-function 直接转跳到相应 leaf block 的文件
发生错误时
(use-package use-package
:config
(a))
Debugger entered–Lisp error: (void-function a)
(leaf leaf
:config
(a))
Warning (leaf): Error in `leaf’ block. Error msg: Symbol’s function definition is void: a Disable showing Disable logging
内置包的这个新闻在哪
leaf已经不够抽象了,用它还不如用传统的办法…
(setq-default ...)
(with-eval-after-load ...)
(define-key ...)
自带straight.el的功能看起来不错, 但直接git submodule好像也差不多…
更加直观啊…
去年入坑git submodule,感觉挺好用的。一切尽在自己的掌控之中
是啊,这个好棒,有时候把自己的相关代码也用 leaf block 装起来,方便 leaf-find
和出错时定位
确实,宏展开以后代码言简意赅,比起 use-package 展开突然冒出一堆不明所以的代码来说,对初学者太友好了。就是不知道具体性能会影响多少(但这个还不是初学者可以考虑的事情 )