#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
У меня сложилось впечатление, что вы даже можете оставить общий заголовок там, где он есть для вашего приложения.