Заставить isearch пропускать сложенный контент в режиме org

9

Q: Как я могу сказать isearchигнорировать содержимое свернутых блоков по умолчанию в org-modeбуферах?

В частности, я бы хотел isearchигнорировать содержимое блоков комментариев и ящиков : при создании документов в них org-modeя часто использую блоки комментариев и пользовательские ящики для хранения различных видов заметок о тексте, который я пишу. Я держу их сложенными по умолчанию, чтобы их содержимое не отвлекало меня:

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

Это работает очень хорошо, но не остановит org-modeрасширение этих блоков, если они содержат совпадения для строки, которую я использую isearch.

itsjeyd
источник

Ответы:

11

Вы можете установить , search-invisibleчтобы nilв вашей .emacsили с помощью Customize. Затем, если вы действительно хотите , чтобы показать матчи в скрытом тексте, нажмите во M-s iвремя использования isearch.

(Я нашел это, прочитав документы isearch-forwardи isearch-toggle-invisible, но это также задокументировано в руководстве: см. Special Isearch .)

Это влияет на все буферы, а не только на Org; если вы хотите использовать nilв org-modeбуферах и по умолчанию в других местах, вы можете создать локальную привязку буфера в буферах Org:

(add-hook 'org-mode-hook
          (lambda ()
            (make-local-variable 'search-invisible)
            (setq search-invisible nil)))
Константин
источник
1
Значение локального буфера было бы более практичным, чем рекомендация let привязки. :-)
Малабарба
@ Малабарба: Очень верно! (Я не знал, что можно использовать make-local-variableдля создания привязки локального буфера для переменной, которая уже определена как глобальная - до сих пор, то есть. Я все еще учусь. :-)) Я обновлю ответ.
Константин
7

Во время использования isearchвы можете переключать поиск по невидимому тексту с помощью M-s i.

Вы также можете настроить это поведение с помощью функции M-x customize-group isearchпоиска Search Invisible.

Обратите внимание, что это будет игнорировать все в сложенном блоке, я не могу игнорировать только текст в закомментированном блоке.

MonsieurBanana
источник
Двое из нас, должно быть, печатали одновременно! :-)
Константин