Emacs 定义键盘退出和高亮显示清除的新功能

Emacs 定义键盘退出和高亮显示清除的新功能,emacs,elisp,Emacs,Elisp,我对elisp非常陌生,我试图定义一个函数来设置搜索时的突出显示行为。目标是:在i-search之后,我希望能够用C-g清除突出显示,但如果我按enter键,我希望突出显示保持不变 因此,我在init.el中定义了一个函数: 但无论如何,它不起作用。这里怎么了 谢谢 恐怕有很多事情: 您的全局设置密钥已断开: (global-set-key (kbd "C-g") 'keyboard-quit-cleanup) 不是: 你在哪里看到的 自定义函数不是交互式命令,因此无法将其绑定到键。它需要:

我对elisp非常陌生,我试图定义一个函数来设置搜索时的突出显示行为。目标是:在i-search之后,我希望能够用C-g清除突出显示,但如果我按enter键,我希望突出显示保持不变

因此,我在init.el中定义了一个函数:

但无论如何,它不起作用。这里怎么了


谢谢

恐怕有很多事情:

您的全局设置密钥已断开:

(global-set-key (kbd "C-g") 'keyboard-quit-cleanup)
不是:

你在哪里看到的

自定义函数不是交互式命令,因此无法将其绑定到键。它需要:

(defun keyboard-quit-cleanup ()
  "Clean up highlights after keyboard quit."
  (interactive)
  ...)
您可能希望使用FORCE参数来延迟高亮显示清理

你绑错东西了

C-g绑定到isearch模式映射键映射中的isearch中止

编辑:根据tripleee的评论,搞乱全局绑定肯定是个坏主意。肯定有一些特殊的行为与之相关,你不想冒险破坏它

当您希望在标准行为中添加额外的行为时,您可能希望根据偏好使用钩子或一些建议。在这种情况下,我们可以使用方便的挂钩

参见C-hv isearch模式端部吊钩RET

添加钩子“isearch模式结束钩子”我的isearch结束 解除我的搜索结束 “isearch模式结束挂钩”的自定义行为。 当isearch模式结束钩子退出时 惰性高光清除
我假设您通常将惰性高光清理设置为nil,否则默认情况下会进行清理。

恐怕有很多事情:

您的全局设置密钥已断开:

(global-set-key (kbd "C-g") 'keyboard-quit-cleanup)
不是:

你在哪里看到的

自定义函数不是交互式命令,因此无法将其绑定到键。它需要:

(defun keyboard-quit-cleanup ()
  "Clean up highlights after keyboard quit."
  (interactive)
  ...)
您可能希望使用FORCE参数来延迟高亮显示清理

你绑错东西了

C-g绑定到isearch模式映射键映射中的isearch中止

编辑:根据tripleee的评论,搞乱全局绑定肯定是个坏主意。肯定有一些特殊的行为与之相关,你不想冒险破坏它

当您希望在标准行为中添加额外的行为时,您可能希望根据偏好使用钩子或一些建议。在这种情况下,我们可以使用方便的挂钩

参见C-hv isearch模式端部吊钩RET

添加钩子“isearch模式结束钩子”我的isearch结束 解除我的搜索结束 “isearch模式结束挂钩”的自定义行为。 当isearch模式结束钩子退出时 惰性高光清除
我假设您通常将惰性高光清理设置为nil,否则默认情况下会进行清理。

可能会强调全局重新绑定C-g是一个非常糟糕的主意。可能会强调全局重新绑定C-g是一个非常糟糕的主意。