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.