我想实现这样的目标:
(setq my-global-keybindings
'(([?\C-x ?\C-d] . dired)
([?\C-x ?\C-b] . ibuffer)
([?\C-x b] . ivy-switch-buffer)))
(apply #'bind-keys* my-global-keybindings)
但bind-keys*在这里是一个宏。
在绑定键的特定情况下,我认为更好的选择是寻找替代该功能的函数bind-keys*
宏(我没有看到任何理由为什么它应该是宏而不是函数)。
但至于更普遍的问题,我会这样做:
(defmacro my-multi-bind-keys (bindings)
(macroexp-progn
(mapcar (lambda (binding)
`(bind-keys* ,@binding))
bindings)))
(my-multi-bind-keys (([?\C-x ?\C-d] dired)
([?\C-x ?\C-b] ibuffer)
([?\C-x b] ivy-switch-buffer)))
请注意,使用setq
就像你所做的那样是有问题的:宏需要在编译期间扩展,但是setq
不应该由编译器执行(它应该是compiled由编译器在稍后执行代码时运行),因此宏没有健全的方法来访问 var 的值(至少在时间旅行生效之前)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)