A dobra atrapalha ao mesclar dois arquivos organizacionais usando o ediff, então estou tentando desativar todas as dobras nos buffers do modo organizacional criados pelo ediff. O comportamento de dobragem sem bordas não deve ser afetado.
Ingenuamente, acho que algo semelhante ao seguinte deve funcionar:
(add-hook 'ediff-mode-hook
(lambda ()
(set (make-local-variable 'org-inhibit-startup-visibility-stuff) t)))
Estou bastante certo de que esta é a variável organizacional a ser modificada (em vez de org-startup-folded
ou org-agenda-inhibit-startup
).
Eu tentei vários ganchos sem sucesso (principalmente ediff-mode-hook
, ediff-before-setup-hook
, ediff-meta-mode-hook
, e ediff-prepare-buffer-hook
- o que provavelmente é tarde demais) na esperança de que a variável internado será herdado.
É bem possível que eu esteja usando make-local-variable incorretamente; o padrão é apenas emprestado do que tenho visto amplamente.
Somente definir o valor globalmente foi eficaz (mas não é para isso que estou procurando). Devo estar (ab) usando o mecanismo de aconselhamento?
show-all
? (org-mode
É construído em cima deoutline-mode
, e parece que você sempre quer mostrar tudo.)(add-hook 'ediff-prepare-buffer-hook 'show-all)
faz o truque! Adicione isso como resposta, @ Dan? Ainda estou curioso sobre as variáveis locais do ediff, mas acho queshow-all
é a melhor solução para o meu problema.Respostas:
Parece que seu objetivo é que os
org-mode
arquivos sempre mostrem tudo quando estãoediff
. A solução mais simples é provavelmente evitar a abordagem de variáveis locais e simplesmente colocarshow-all
o gancho relevante,ediff-prepare-buffer-hook
que é executado após a instalação dos buffers A, B e C:Apesar do nome,
org-show-all
também funciona emoutline-mode
queorg-mode
é construído em cima de. Ao contráriooutline-show-all
, mostra gavetas de propriedades e blocos como#+begin_src ... #+end_src
.org-show-all
foi adicionado na Org 9.1.6. Nas versões anteriores, você pode usaroutline-show-all
oushow-all
.(Observe, de acordo com um comentário, que
show-all
está marcado como obsoleto no Emacs 25.1 a favor deoutline-show-all
. O último símbolo não está vinculado em 24.5.)fonte
show-all
está definido de maneira saudável, para que não precise de condições defensivas no gancho e possa ser chamado com segurança dentro dos modos não-org / não-estrutura de tópicos.show-all
está marcado como obsoleto desde 25.1. Melhor usaroutline-show-all
, eu acho. (O anterior é apenas um nome alternativo para o último.)Outra opção pode ser encontrada na página worg . A idéia básica é usar
ediff-select-hook
para desdobrar um elemento sempre que determinada região for selecionada em ediff e dobrá-los novamente noediff-unselect-hook
. Estou postando o código aqui por completofonte