bing
3
用hydra不能只写文档吧?dired的按键都要重新绑定一次吗?
bing
6
用hydra折腾了一下,效果这样,替换了dired原来的?键
:
hydra参数:foreign-keys run
,表示hydra未绑定的按键,按过之后不影响hydra的显示。这样就 不用绑定 dired的任何按键,hydra函数体几乎为空,只用它的docstring。
写hydra docstring时,用%s()
调用lisp,返回一个格式化、着色的文本。
(defun formated-docs ()
(let ((docs-plist
'("X/!" "执行shell命令" "B" "编译el文件" "Z" "压缩文件\n"
"C" "复制" "D" "删除" "R" "移动/重命名\n"
"d" "标记删除" "u" "取消标记" "U" "取消所有标记" "x" "执行动作")))
(cl-loop for (key doc) on docs-plist by 'cddr
concat
(format " %s: %s" (propertize key 'face '(:foreground "pink")) doc))))
(defhydra hydra-dired-doc (:foreign-keys run :hint nil)
"
%s(formated-docs)
_?_ 打开/关闭此文档
"
("?" nil))
(define-key dired-mode-map (kbd "?") 'hydra-dired-doc/body)
不足之处:
- 文档格式化太死板了,不能自适应宽度、自动对齐;
- 不能跟着dired出现、消失;
- 用minibuffer还是不如跟在dired自己的buffer里好看,尤其多window的时候,或许能用popup / header-line / overlay之类的实现?
1 个赞