按Elisp规范如何设置[mouse-12]按键执行无操作?
解决Emacs中[mouse-12]事件触发的闪烁与报错问题
遇到这种触摸板误触发鼠标事件的情况,按照Elisp规范,最优雅的解决方式是把[mouse-12]绑定到一个无操作的交互式函数。Emacs内置的ignore函数就是专门干这个的——它会忽略所有传入的参数,并且本身是交互式的,完全满足按键绑定的要求。
直接用下面的代码就能搞定:
(global-set-key [mouse-12] 'ignore)
为什么不选其他方案?
- 绑定
nil不行:nil不是交互式函数,直接绑定会导致Emacs报错,反而更麻烦。 - 自定义空lambda(比如
(lambda () (interactive)))虽然能工作,但ignore是Emacs官方提供的标准函数,代码更简洁,也符合Elisp的编码规范。
设置完成后,你可以用C-h k快捷键,然后触发这个鼠标事件,查看绑定信息是否显示为ignore,确认设置生效。这样就不会再出现闪烁和<mouse-12> is undefined的提示了。
内容的提问来源于stack exchange,提问作者Daniel Vartanov
相关产品推荐
相关产品推荐

