Quando edito documentos grandes, gostaria de ver onde estou vendo o esboço (sem conteúdo) em um buffer separado. Como quando você lê um arquivo PDF, há um sumário à esquerda. (ver abaixo)
No modo organizacional, é possível expandir / recolher o contorno. Mas é possível ter um contorno estático à esquerda (ou à direita) em um buffer separado, para que, quando você clicar nos títulos, o outro buffer se mova para essa posição?
Tipo assim, mas para o modo org?
[Editar]
O clone-indirect-buffer
está muito perto do que eu quero. A peça que falta no quebra-cabeça é pular para o mesmo local ao clicar em um cabeçalho / (ou em qualquer outro ponto).
Por isso, tentei escrever algum código: Mover para outro buffer clonado no mesmo ponto? (posição de sincronização de buffers indiretos) (modo organizacional)
Mas não funciona se o conteúdo for recolhido. Se isso puder funcionar, o buffer de clonagem indereta é uma solução completa para isso.
[Edit2 Solution]
O código no link acima e na resposta abaixo combina niceley para resolver o salto para frente e para trás.
;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)
fonte
C-c C-x b
, ouorg-tree-to-indirect-buffer
.org-sparse-tree-to-indirect-buffer
função, por exemplo, mas parece não existir.Respostas:
Algumas opções vêm à mente. Os dois primeiros são
speedbar
, que supostamente funcionam bemorg-mode
eminimap
, embora eu não os tenha usado, não posso atestá-los pessoalmente.O que poderia ser a opção mais simples (e também a mais flexível) seria usar um buffer indireto .
Na prática, você iria para o
org
buffer para o qual deseja um esboço, pressionariaM-x clone-indirect-buffer
(useC-u M-x clone-indirect-buffer
se quiser controlar o que o clone é chamado) e, em seguida, boom, há outra cópia do buffer para você usar. Coloque esse clone em uma janela ou moldura lado a lado com o buffer original e, no clone, ajuste o contorno ao seu gosto.Ele não fornece a funcionalidade "clique no cabeçalho no esboço" que você mencionou, mas fornece o espírito da barra lateral.
Edit: em resposta ao seu comentário, aqui está um comando simples que, quando chamado do clone do buffer , mudará para o buffer base e moverá o ponto para onde o cursor estava no clone do buffer:
fonte
Que tal: M-x
occur
RET^*+
RET(observe que há um espaço no final do regexp).fonte
Depois de ler a resposta de Dan e sua solução com base nela, eu reuni isso. Ele abre um novo clone estreito, somente leitura, à esquerda do buffer atual e liga
<mouse-1>
eRET
localmente no clone para pular para essa posição no buffer base.Isso funcionará com
outline-mode
eoutline-minor-mode
, assim como modos baseados neles, comoorg-mode
. Encontrei algumas informações sobre como obter os mapas de chaves locais, mas não sei como escolher qual deles copiar. Há também esta página que tem uma função para criar automaticamente modos menores específicos de buffer para definir chaves locais de buffer, mas isso parece fora do escopo para esse problema.fonte
outline-mode-map
em vez deorg-mode-map
eu consegui fazê-lo trabalhar paraAUCTeX
comoutline-minor-mode
, o que é bom.outline-mode
função dahide-body
esconde tudo, exceto as manchetes.outline-mode-map
ehide-body
, e algumas outras pequenas melhorias.Por fim, isso foi implementado no pacote
org-sidebar
:fonte
duas sugestões de aluguel baixo (o que eu faço) de um não programador que gosta de usar aquamacs no editor de texto:
INÍCIO: recuo (para mostrar o contorno do tipo cascata mais fácil de ver como um todo)
isto é para visualização de buffer orientada por tabulação
e
+ OPÇÕES: H: N, onde N = = o número de níveis que você deseja ver na exportação de html, que é a sugestão 2
consulte: https://emacsclub.github.io/html/org_tutorial.html
fonte
Eu precisava de algo semelhante, então montei o
outline-toc
modo . Deve funcionar para documentos no modo organizacional.fonte