使isearch在组织模式下跳过折叠的内容


9

问:如何知道isearch默认情况下忽略org-mode缓冲区中折叠块的内容?

更具体地说,我想isearch忽略注释块抽屉的内容:在编写文档时,org-mode我经常使用注释块和自定义抽屉来存储有关所写文本的各种注释。我默认将它们折叠起来,以确保它们的内容不会分散我的注意力:

(add-hook 'org-mode-hook #'org-hide-block-all)

这确实很好,但是org-mode如果这些块包含我要匹配的字符串的匹配项,那么它们不会停止扩展isearch

Answers:


11

您可以设置search-invisiblenil.emacs或使用自定义。然后,如果您确实希望以不可见的文本显示匹配项,请M-s i在使用时按isearch

(我发现这个通过阅读的文档isearch-forwardisearch-toggle-invisible,但它也记录在手册中:见特殊ISEARCH。)

这会影响所有缓冲区,而不仅仅是Org。如果要nilorg-mode缓冲区中使用默认值,则可以在Org缓冲区中创建本地缓冲区绑定

(add-hook 'org-mode-hook
          (lambda ()
            (make-local-variable 'search-invisible)
            (setq search-invisible nil)))

1
缓冲区局部值比let绑定建议更实用。:-)
马拉巴巴

@Malabarba:非常正确!(我不知道有人可以用来make-local-variable为已经定义为全局的变量创建局部缓冲区绑定-直到现在,也就是说,我仍在学习东西。:-))回答。
君士坦丁

7

在使用时,isearch您可以使用来切换不可见文本的搜索M-s i

您还可以使用M-x customize-group isearch和自定义此行为Search Invisible

请注意,这将忽略折叠块中的所有内容,我不能仅忽略注释块中的文本。


我们两个必须同时输入!:-)
君士坦丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.