Nunca crie molduras no ediff

14

Em geral, eu não gosto de quadros. Agora eu estou usando

(setq ediff-window-setup-function #'ediff-setup-windows-plain)

Para garantir que ediffnão crie um quadro ao iniciar.

No entanto, certos comandos, como ediff-show-registryainda abrem novos quadros.

Existe alguma maneira de desativar completamente a criação de quadros ediff?

PythonNut
fonte
Que tal modificar ediff-skip-unsuitable-framesou comentar isso completamente dentro ediff-show-registry- por exemplo, comentar (ediff-skip-unsuitable-frames 'ok-unsplittable):?
lawlist
5
Enquanto você estiver nisso, considere pesquisar a fonte da edifffamília de bibliotecas (make-framee encontrará alguns lugares que precisam ser corrigidos para se adequar às suas preferências. Sua solicitação é certamente razoável e mereceria (na minha opinião) uma solicitação de recurso ao autor e / ou equipe do Emacs - a maioria das pessoas assumirá que ediff-setup-windows-plaindeve se aplicar em todos os aspectos, sem as várias make-frameexceções.
lawlist

Respostas:

3

Há um predicado interno em ediff-init.el, chamado ediff-window-display-p. Quando eu o redefinii (depois de carregar o ediff, é claro) assim, tudo funciona em um único quadro, incluindo a função que você mencionou como um problema:

(defun ediff-window-display-p () nil)

Concordo com o @lawlist que este é um bom pedido de recurso - para corrigir ediff-window-setup-function.

cyberbisson
fonte
2
Isso pode ser melhor escrito (advice-add 'ediff-window-display-p :override #'ignore), o que pode ser revertido com mais facilidade advice-remove(além disso, não é necessário carregar o ediff primeiro).
npostavs
@npostavs great! Obrigado pelo código mais inteligente!
cyberbisson
Eu tentei isso, mas infelizmente o ediff parou de usar minha função de configuração de janela personalizada.
precisa saber é o seguinte
@ tboyce12 Isso é confuso ... por que você tem uma função de configuração de janela personalizada se não deseja que novas janelas (ou seja, quadros) sejam exibidas? O que a função faz?
cyberbisson
Eu quero novas janelas, mas não novos quadros. O padrão ediff-setup-windows-plainassume todo o quadro - quero manter minhas janelas de "contexto" abertas (por exemplo, notas e outros arquivos). Então, eu escrevi uma função de configuração de janela personalizada (usa um buffer de exibição personalizado desenvolvido por ace-window para escolher onde dividir as janelas e exibir novos buffers). Parece que, quando o Ediff inicializa, ele verifica isso ediff-window-display-pe, se falso, ignora a função de configuração da janela personalizada e o usa ediff-setup-windows-plain. Portanto, para minha configuração personalizada, evitarei ediff-show-registryou escreverei um comando personalizado.
precisa saber é o seguinte