¿Cómo puedo anclar el búfer * compilación * para nunca dejar un solo marco / ventana


7

Preferiría que el *compilation*búfer permanezca siempre en su propio marco. Sin embargo, actualmente si ejecuto M-x compiledesde otro marco / ventana, el búfer aparece también en una nueva ventana allí. ¿Cómo puedo hacer que emacs solo aumente el marco existente que muestra el *compilation*búfer?


Creo que esta es la respuesta a su pregunta, que escribí hace 3 años al comienzo de mi búsqueda en Emacs: stackoverflow.com/a/19415289/2112489 Las secciones de código aplicables compile.elpueden haber cambiado, y desde entonces he hecho muchas Cambios / mejoras en mis funciones personalizadas que se dirigen a ciertos marcos para la visualización del búfer: stackoverflow.com/questions/18346785/... Eche un vistazo y vea si el primer enlace es aproximadamente lo que está buscando, quién sabe, incluso puede funcionar sin haciendo cambios.
leyes

Respuestas:


5

Normalmente, Emacs considera que el cuadro seleccionado es el único cuadro reutilizable. En otras palabras, normalmente Emacs solo busca en el marco actual ("seleccionado") las ventanas que ya contienen el búfer para mostrar ("ventanas reutilizables"). Lo que necesita es que Emacs considere el marco del búfer de compilación como un marco reutilizable:

(push '("\\*compilation\\*" . (nil (reusable-frames . t))) display-buffer-alist)

El fragmento anterior hará que todos los marcos sean reutilizables cuando se display-buffermuestre el *compilation*búfer. Mire la documentación de display-buffer-reuse-windowpara saber qué otros valores reusable-framespueden recibir.

Sin embargo, esto no se ocupa de la otra dirección: abrir un búfer de código desde la ventana de compilación. Por ejemplo, si abre un búfer presionando un enlace en el búfer de compilación, Emacs abrirá el búfer en el mismo marco que la ventana de compilación. Cambiar eso es otra cuestión. No sé cómo se compara el comportamiento con la special-display-buffer-namessolución.


2

Hacer que la compilación del búfer siempre tenga una ventana dedicada. Una forma de hacerlo es personalizar la opción special-display-buffer-names, incluir "*compilation*". Otra es personalizar la opción special-display-regexps, para incluir una expresión regular que coincida con ese nombre de búfer. (Incluyo la expresión regular "[ ]?[*][^*]+[*]", que coincide con todos los búferes cuyos nombres son *...*).

(Consulte también la opción special-display-frame-alist, que puede usar para especificar el comportamiento y las características del marco utilizado para tales búferes de pantalla especiales).

Emacs le dirá que estas opciones de "buffer de visualización especial" son "obsoletas", pero gracias a Dios todavía son compatibles. Ofrecen una forma sencilla de hacer lo que quieras.

Si quieres sufrir lo que Emacs prefiere que hagas ahora, entonces personaliza la opción en su display-buffer-alistlugar. La idea es esencialmente la misma (es solo una opción de usuario más fea y complicada).


¿Te importaría explicar los votos negativos? ¿Hay algo incorrecto en esta respuesta?
Dibujó el

1
Probablemente sea por las opciones obsoletas y el snark ("sufrir").
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.