¿Cómo fuerzo a que se abra un búfer específico en una nueva ventana?

12

Al confirmar cambios en Magit, es útil tener abierta la vista de diferencias al tiempo que se agregan detalles sobre la confirmación.

En Magit, vemos la diferencia en el *magit ..*búfer. Cuando presiona ccmientras el cursor está en un archivo por etapas , .. COMMIT_EDITMSGaparece el búfer de confirmación Magit . Por defecto, este nuevo búfer reemplaza el *magit ..*búfer que mostraba las diferencias de confirmación.

PREGUNTA: ¿Cómo puedo abrir el .. COMMIT_EDITMSGbúfer en una nueva ventana (reutilizar una ventana diferente o crear una nueva ventana si el marco tenía solo 1 ventana para empezar) para que pueda ver tanto el búfer *magit ..*como el .. COMMIT_EDITMSGbúfer?

Kaushal Modi
fuente
Relacionado: emacs.stackexchange.com/q/327/50
Malabarba

Respuestas:

17

Es posible configurar cómo se abre un búfer (en el mismo marco / ventana o un marco / ventana diferente) usando display-buffer-alist. Consulte las referencias a continuación para obtener más información sobre esta variable.

Solución

Necesitamos decirle a emacs que siempre abra buffers que terminen COMMIT_EDITMSGen una ventana pero no en la misma *magit ..*ventana ( ).

Agregue el siguiente fragmento a init.elafter (require 'magit)para especificar esta acción.

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

Desglose de la solución

display-buffer-alistes un alistque llama a FUNCTION(o una lista de funciones) con ALISTparámetros cuando a CONDITIONes verdadero. El display-buffer-alistpuede ser representado como,

'(CONDITION . (FUNCTION . ALIST))
  • Aquí CONDITIONes que el nombre del búfer termina con COMMIT_EDITMSGy que está representado por ".*COMMIT_EDITMSG".
  • La FUNCTIONllamada es display-buffer-pop-up-windowcomo queremos crear una ventana para este búfer. En lugar de especificar la función por sí misma, se incluye como una lista de una sola función (display-buffer-pop-up-window)para que se puedan agregar fácilmente más funciones a la lista si es necesario en el futuro.
  • El ALISTcontiene (inhibit-same-window . t)como no queremos que este buffer para abrir en la misma ventana.

Referencias

Kaushal Modi
fuente
2

Comenzar con v2.1.0Magit de forma predeterminada muestra los cambios que se están confirmando junto con el búfer utilizado para escribir el mensaje de confirmación.

tarsius
fuente