Como forçar um buffer específico para abrir em uma nova janela?

12

Ao confirmar alterações no Magit, é útil ter a visualização diff aberta ao adicionar detalhes sobre a confirmação.

No Magit, vemos o diff no *magit ..*buffer. Quando você bate ccenquanto o cursor estiver em um Encenado arquivo, o magit cometer tampão .. COMMIT_EDITMSGaparece. Por padrão, esse novo buffer substitui o *magit ..*buffer que estava mostrando as diferenças de confirmação.

PERGUNTA - Como faço para abrir o .. COMMIT_EDITMSGbuffer em uma nova janela (reutilizar uma janela diferente ou criar uma nova janela se o quadro tiver apenas 1 janela para começar) para que eu possa ver os buffers *magit ..*e os .. COMMIT_EDITMSG?

Kaushal Modi
fonte
Relacionados: emacs.stackexchange.com/q/327/50
Malabarba

Respostas:

17

É possível configurar como um buffer é aberto (no mesmo quadro / janela ou em um quadro / janela diferente) usando display-buffer-alist. Consulte as referências abaixo para aprender mais sobre essa variável.

Solução

Precisamos dizer ao emacs para sempre abrir buffers terminando COMMIT_EDITMSGem uma janela, mas não na mesma *magit ..*janela ( ).

Adicione o seguinte snippet ao init.eldepois (require 'magit)para especificar esta ação.

(add-to-list 'display-buffer-alist
                 '(".*COMMIT_EDITMSG". ((display-buffer-pop-up-window) .
                                        ((inhibit-same-window . t)))))

Repartição da solução

display-buffer-alisté um alistque chama a FUNCTION(ou uma lista de funções) com ALISTparâmetros quando a CONDITIONé verdadeiro. O display-buffer-alistpode ser representado como,

'(CONDITION . (FUNCTION . ALIST))
  • Aqui CONDITIONé que o nome do buffer termina com COMMIT_EDITMSGe é representado por ".*COMMIT_EDITMSG".
  • A FUNCTIONchamada é display-buffer-pop-up-windowcomo queremos criar uma janela para esse buffer. Em vez de especificar a função por si só, ela é colocada como uma lista de uma única função, (display-buffer-pop-up-window)para que mais funções possam ser facilmente adicionadas à lista, se necessário no futuro.
  • O ALISTcontém (inhibit-same-window . t)porque não queremos que esse buffer seja aberto na mesma janela.

Referências

Kaushal Modi
fonte
2

A partir do v2.1.0Magit, por padrão, mostra as alterações que estão sendo confirmadas juntamente com o buffer usado para gravar a mensagem de confirmação.

tarso
fonte