原始问题
(defun meow-reverse ()
"Just exchange point and mark.
This command supports `meow-selection-command-fallback'."
(interactive)
(meow--with-selection-fallback
(meow--execute-kbd-macro meow--kbd-exchange-point-and-mark)
(if (member last-command
'(meow-visit meow-search meow-mark-symbol meow-mark-word))
(meow--highlight-regexp-in-buffer (car regexp-search-ring))
(meow--maybe-highlight-num-positions))))
meow-reverse
在我的 doom 配置上无效。
现象
- 在打开任意文件中,meow-reverse 不能反转光标
- 在 meow-tutor 的 buffer 中可以正常反转
- emacs -q -l meow.el 打开文件, meow-reverse 可以正常反转
- 其他同样使用到
meow--execute-kbd-macro
的命令比如meow-next
工作都正常。 - 在 1 的不能反转的 buffer 中,用 macrostep-expand 展开下任意宏后 meow-reverse 可以正常工作。
排查发现
在 meow--execute-kbd-macro
中的 key-binding
返回为 nil;
但如果在问题 buffer 中 “C-x C-e” 求值 (key-binding [24 24])
(这里[24 24] 为 “C-x C-x”的向量值)能正确返回命令。