Удаление несопоставимых деревьев верхнего уровня при выполнении поиска тегов в режиме организации Emacs

#emacs #view #elisp #user-experience #org-mode

#emacs #Вид #elisp #пользовательский интерфейс #org-mode

Вопрос:

В течение последних полутора лет я поддерживал монолитный буфер в режиме организации для своих инженерных заметок с моим нынешним работодателем. Несмотря на то, что этот файл содержит в основном указатели на другие документы, он стал довольно большим по человеческим стандартам (48 290 строк текста), оставаясь при этом легко доступным для поиска и редактирования программными средствами (читай: grep и поиск тегов в режиме организации).).

Однако меня беспокоит одна вещь. Когда я выполняю поиск по тегам с использованием режима организации 6.33x, представление разреженного дерева Org сохраняет свернутое представление несопоставимых деревьев в буфере (то есть содержимое, которому предшествует одна звездочка, *).). Обычно это полезно для буферов меньшего размера или тех, которые лучше организованы в одно дерево с несколькими ветвями. Однако это не особенно хорошо работает для документации, где каждое новое дерево генерируется в хронологическом порядке, по одному на каждый день, как я делал.

.

Прежде чем я продолжу, я отмечу, что мой обходной путь заложен в том, что я только что задал, как и очевидные изменения в моих привычках документирования с этим буфером. Однако остаются следующие вопросы:

1) Почему режим организации организует деревья таким образом при выполнении поиска по разреженным тегам? Технические детали самоочевидны, решения UX в меньшей степени.

2) Если бы я хотел исправить эту проблему с помощью скрипта, написанного на Emacs Lisp, какие хуки и команды я должен изучить более подробно, чтобы реструктурировать представление документа? Написание переопределений для стандартных команд (например, org-match-sparse-tree ) уже самоочевидно.

.

Заранее благодарю.

Комментарии:

1. Если вы не получили хорошего ответа здесь, попробуйте список orgmode.

2. @Tom Я согласен. Спасибо за указатель.

3. Я не совсем понимаю, что вы подразумеваете под «свернутым представлением непревзойденных деревьев». Не могли бы вы отредактировать вопрос с помощью небольшого примера?

4. @suvayu Ответить здесь достаточно просто. При использовании разреженного древовидного представления деревья верхнего уровня, не содержащие совпадающих результатов, продолжают отображаться в буфере как отдельные * маркированные элементы. Это проблематично, когда в буфере существует много деревьев верхнего уровня, так что даже их свернутые представления добавляют шум к поиску. Это, в буквальном смысле, проблема отсутствия нужных деревьев для леса.

5. @MrGomez Хорошо, я понимаю. Но я не думаю, что это возможно без пользовательского кода lisp. Хотя это и не решение, но для некоторых идей вы можете посмотреть на функцию «org-tags-search-to-buffer» в моих конфигурациях организации здесь . Я думаю, вам нужно в значительной степени написать свою собственную функцию разреженного дерева и настроить видимость заголовков по своему вкусу.

Ответ №1:

Как вы уже заметили, проблема затрагивает только заголовки верхнего уровня. Хорошо то, что в режиме организации вы можете легко понизить все заголовки с помощью простых нажатий клавиш. Таким образом, вы можете избежать проблемы. Также последующая очистка — это всего лишь несколько простых нажатий клавиш.

Пошаговые инструкции:

  • Отметьте полный буфер
  • Вызов M-right(для outline-demote )
  • Ввод * rootn в начале файла
  • Теперь создайте свое поддерево и делайте с ним, что хотите.
  • По завершении вы можете удалить * rootn начало файла и снова продвинуть заголовки с помощью M-left

У меня сложилось впечатление, что вы даже можете оставить общий заголовок там, где он есть для вашего приложения.