Когда я редактирую большие документы, я хотел бы видеть, где я нахожусь, видя схему (без содержимого) в отдельном буфере. Например, когда вы читаете файл PDF, слева отображается оглавление. (увидеть ниже)
В режиме орг можно развернуть / свернуть контур. Но возможно ли иметь статический контур слева (или справа) в отдельном буфере, чтобы при нажатии на заголовки другой буфер перемещался в эту позицию?
Вроде как, но для орг-режима?
[Править]
Это clone-indirect-buffer
очень близко к тому, что я хочу. Недостающим элементом головоломки является прыжок в то же место при нажатии на заголовок / (или любую точку на самом деле).
Для этого я попытался написать некоторый код: перейти к другому клонированному буферу в ту же точку? (синхронизировать положение косвенных буферов) (org-mode)
Но это не работает, если контент свернут. Если это можно заставить работать, то clone-inderect-buffer является полным решением для этого.
[Edit2 Solution]
Код в ссылке выше и в ответе ниже объединяет niceley для решения прыжков вперед и назад.
;first call 'clone-indirect-buffer'. Then...
;This function works between buffer and it's clone.
(defun my/goto-same-spot-in-other-buffer ()
"Go to the same location in the other buffer. Useful for when you have cloned indirect buffers"
(interactive)
(let ((my/goto-current-point (point)))
(other-window 1)
(goto-char my/goto-current-point)
(when (invisible-p (point))
(org-reveal)))
)
;This function is a clone-to-buffer jump only:
; It does find the other buffer first thou instead of just jumping to the other
; window as does the function above.
(defun my/jump-to-point-and-show ()
"Switch to a cloned buffer's base buffer and move point to the
cursor position in the clone."
(interactive)
(let ((buf (buffer-base-buffer)))
(unless buf
(error "You need to be in a cloned buffer!"))
(let ((pos (point))
(win (car (get-buffer-window-list buf))))
(if win
(select-window win)
(other-window 1)
(switch-to-buffer buf))
(goto-char pos)
(when (invisible-p (point))
(show-branches)))))
(global-set-key (kbd "<s-mouse-1>") 'my/goto-same-spot-in-other-buffer)
(global-set-key (kbd "s-m") 'my/goto-same-spot-in-other-buffer)
(global-set-key (kbd "<C-s-mouse-1>") 'my/jump-to-point-and-show)
(global-set-key (kbd "C-s-m") 'my/jump-to-point-and-show)
источник
C-c C-x b
илиorg-tree-to-indirect-buffer
.org-sparse-tree-to-indirect-buffer
Например, нам нужна была бы функция, но она, кажется, не существует.Ответы:
Несколько вариантов приходят на ум. Первые два
speedbar
, которые якобы хорошо играютorg-mode
, иminimap
, хотя я ими не пользовался, поэтому не могу поручиться за них лично.Что может быть самым простым вариантом (а также наиболее гибким), будет использовать косвенный буфер .
На практике вы переходите в
org
буфер, для которого вы хотите наброски, нажимаетеM-x clone-indirect-buffer
(используйте,C-u M-x clone-indirect-buffer
если хотите контролировать, как называется клон), а затем boom, есть еще одна копия буфера для использования. Поместите этот клон в окно или рамку рядом с исходным буфером и, в клоне, отрегулируйте контур по своему вкусу.Он не дает вам упомянутую выше функциональность «щелкнуть по заголовку в общих чертах», но дает вам дух боковой панели.
Изменить: в ответ на ваш комментарий, вот простая команда, которая при вызове из буфера клона переключится на базовый буфер и переместит точку туда, где курсор находился в буфере клона:
источник
Как насчет: M-x
occur
RET^*+
RET(обратите внимание, что в конце регулярного выражения есть пробел).источник
Прочитав ответ Дэна и основанное на нем ваше решение, я собрал все воедино. Он открывает новый узкий доступный только для чтения клон слева от текущего буфера и связывается
<mouse-1>
иRET
локально в клоне, чтобы перейти к этой позиции в базовом буфере.Это будет работать с
outline-mode
иoutline-minor-mode
, а также с режимами, которые на них основаны, напримерorg-mode
. Я нашел некоторую информацию о том, как получить карты локальных ключей, но я не знаю, как выбрать, какую из них скопировать. Также есть эта страница, на которой есть функция автоматического создания специфичных для буфера второстепенных режимов для установки локальных ключей буфера, но эта проблема выходит за рамки данной проблемы.источник
outline-mode-map
вместо этого,org-mode-map
мне удалось заставить его работатьAUCTeX
сoutline-minor-mode
, что приятно.outline-mode
функцияhide-body
скрывает все, кроме заголовков.outline-mode-map
иhide-body
, и несколько других незначительных улучшений.Наконец, это было реализовано в пакете
org-sidebar
:источник
два предложения низкой арендной платы (что я делаю) от непрограммиста, который любит использовать aquamacs для текстового редактора:
ЗАПУСК: отступ (чтобы наглядно показать контур типа водопада в целом)
это для просмотра буфера через табуляцию
а также
+ ОПЦИИ: H: N, где N = = количество уровней, которые вы хотите видеть в экспорте html, что является предложением № 2
см .: https://emacsclub.github.io/html/org_tutorial.html
источник
Мне нужно что-то подобное, поэтому я собрал
outline-toc
режим . Это должно работать для документов в режиме орг.источник