Cuando edito documentos grandes, me gustaría ver dónde estoy viendo el esquema (sin contenido) en un búfer separado. Al igual que cuando lee un archivo PDF, hay una tabla de contenido a la izquierda. (vea abajo)
En el modo org es posible expandir / contraer el contorno. Pero, ¿es posible tener un contorno estático a la izquierda (o derecha) en un búfer separado para que cuando haga clic en los encabezados, el otro búfer se mueva a esa posición?
¿Un poco así pero para el modo org?
[Editar]
El clone-indirect-buffer
está muy cerca de lo que quiero. La pieza que falta en el rompecabezas es saltar a la misma ubicación al hacer clic en un encabezado / (o en cualquier punto).
Para esto he intentado escribir un código: ¿ Mover a otro búfer clonado al mismo punto? (posición de sincronización de buffers indirectos) (modo org)
Pero no funciona si el contenido se contrae. Si se puede hacer que funcione, entonces el clon-inderect-buffer es una solución completa para esto.
[Solución Edit2]
El código en el enlace de arriba y en la respuesta a continuación combinan niceley para resolver el salto de un lado a otro.
;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)
fuente
C-c C-x b
, oorg-tree-to-indirect-buffer
.org-sparse-tree-to-indirect-buffer
función, por ejemplo, pero no parece existir.Respuestas:
Algunas opciones me vienen a la mente. Los dos primeros son
speedbar
, con los que supuestamente juega bienorg-mode
, yminimap
, aunque no los he usado, no puedo responder por ellos personalmente.Lo que podría ser la opción más simple (y también la más flexible) sería utilizar un buffer indirecto .
En la práctica, iría al
org
búfer para el que desea un esquema, presioneM-x clone-indirect-buffer
(useC-u M-x clone-indirect-buffer
si desea controlar cómo se llama el clon), y luego boom, hay otra copia del búfer para que use. Coloque ese clon en una ventana o marco lado a lado con el búfer original y, en el clon, ajuste el contorno a su gusto.No le brinda la funcionalidad de "hacer clic en el encabezado en el esquema" que mencionó, pero le da el espíritu de la barra lateral.
Editar: en respuesta a su comentario, aquí hay un comando simple que, cuando se invoca desde el clon del búfer , cambiará al búfer base y moverá el punto a donde estaba el cursor en el clon del búfer:
fuente
Qué tal: M-x
occur
RET^*+
RET(tenga en cuenta que hay un espacio al final de la expresión regular).fuente
Después de leer la respuesta de Dan y su solución basada en ella, armé esto. Abre un clon nuevo, estrecho y de solo lectura a la izquierda del búfer actual, y se une
<mouse-1>
yRET
localmente en el clon para saltar a esa posición en el búfer base.Esto funcionará con
outline-mode
youtline-minor-mode
, así como con los modos que se basan en ellos, comoorg-mode
. Encontré información sobre cómo obtener los mapas de teclas locales, pero no sé cómo elegir cuál copiar. También existe esta página que tiene una función para crear automáticamente modos menores específicos del búfer para configurar las claves locales del búfer, pero eso parece estar fuera del alcance de este problema.fuente
outline-mode-map
lugar de hacerloorg-mode-map
, logré hacerlo funcionarAUCTeX
conoutline-minor-mode
, lo cual es bueno.outline-mode
función de 'shide-body
oculta todo excepto los titulares.outline-mode-map
yhide-body
, y algunas otras mejoras menores.Finalmente, esto se ha implementado en el paquete
org-sidebar
:fuente
dos sugerencias de alquiler bajo (lo que hago) de un no programador al que le gusta usar aquamacs para editor de texto:
INICIO: sangría (para mostrar el contorno del tipo de cascada más fácil de ver como un todo)
Esto es para la visualización del búfer por pestañas
y
+ OPCIONES: H: N, donde N = = el número de niveles que desea ver en la exportación html, que es la sugerencia # 2
ver: https://emacsclub.github.io/html/org_tutorial.html
fuente
Necesitaba algo similar, así que armé el
outline-toc
modo . Debería funcionar para documentos en modo org.fuente