是否可以仅针对特定模式/缓冲区使用defadvice修改函数的行为?我希望mouse-yank-primary插入额外的文本,但只有在我处于特定模式时.对于mouse-yank-primary,我试过'defadvice',但是一旦激活它也可以在所有其他缓冲区中运行.
我认为可以通过在模式挂钩中将鼠标按钮重新绑定到我自己的函数来解决,但是elisp手册说最好使用defadvice.
将鼠标按钮重新绑定到另一个函数似乎比我更好.您不需要模式挂钩,通常只需修改模式的键映射:
(eval-after-load '<mode>
'(define-key <mode>-map [mouse-2] 'my-mouse-yank-primary))
Run Code Online (Sandbox Code Playgroud)
将建议本地化为主要模式有点困难.没有参数可以传递给defadvice你,但你可以在模式钩子中设置一些变量的缓冲区本地值,然后在建议代码中检查这个值.如果已经设定,请做一些特别的事情.如果没有,只需评估ad-do-it.
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |