window – ¿Cómo puedo bloquear un marco para que no se divida?

Pregunta:

Actualmente trabajo con ruby ​​y rspec. Me gusta mucho la idea de tener un fotograma separado en otro monitor que me muestre el búfer de compilación. Mi configuración actual usa un marco de 'código' (en el que hago el trabajo real) y un marco de 'resultado de prueba' (en el que veo resultados de rspec)

El problema es que cuando trato de abrir algún error de compilación o archivo en el marco 'resultado de la prueba', la ventana se divide en ese marco. Lo que realmente me gustaría hacer es que se abra en mi marco de 'código'.

Ya utilizo la opción display-buffer-reuse-frames . También intenté establecer la ventana de resultados de compilación dedicated , pero cada vez que emacs intentaba abrir una nueva ventana, se creaba un nuevo marco (lo cual es particularmente terrible si usa Helm).

¿Existe alguna manera fácil de lograrlo?

Respuesta:

Debe configurar el gorila de 600 libras que es display-buffer-alist que determina cómo display-buffer elige dónde mostrar un búfer. Hace que display-buffer-reuse-frames obsoletos en emacsen más reciente. Aquí hay una configuración que debería guiarlo (al menos en emacs 24.3).

;; all buffers, try to reuse windows across all frames
(add-to-list 'display-buffer-alist
           '(".*". (display-buffer-reuse-window .
                                  ((reusable-frames . t)))))

;; except for compilation buffers where you want new and dedicated frames when necessary
(add-to-list 'display-buffer-alist
         '("^\\*Compile-Log\\*". ((display-buffer-reuse-window
                                   display-buffer-pop-up-frame) .
                                  ((reusable-frames . t)
                                  (inhibit-same-window . t)))))

Como puede ver, uso una expresión regular para que coincida con el búfer de registro de compilación. La documentación de display-buffer debería darle una idea de lo que está sucediendo. Solo un aviso de que no es la documentación más agradable que jamás haya leído. Los agregué secuencialmente para que la expresión regular de registro de compilación coincida antes que la expresión regular genérica. Adapte la expresión regular a sus necesidades.

EDITAR Para hacer que cualquier marco sea indivisible, puede evaluar M-: (set-frame-parameter nil 'unsplittable t) en ese marco en particular. Reemplace nil con FRAME requerido si lo hace desde elisp. Entre estas dos configuraciones, debería hacer que el marco de compilación sea exclusivo a menos que encuentre específicamente un archivo en ese marco.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım