Al cambiar de búfer, evite que emacs cambie automáticamente el marco


13

Cuando cambio los búferes, emacs cambiará a un marco existente si el búfer ya está abierto allí.

Encontré cómo prevenir eso al cambiar con ido usando:

(setq ido-default-buffer-method 'selected-window)

Pero no es suficiente: por ejemplo, si hay un error de lisp, emacs cambiará automáticamente al búfer * Backtrace *, y cambiará marcos si ya está abierto.

¿Hay alguna manera de evitar que completamente emacs cambie a un marco existente?

Respuestas:


3

No parece haber una opción para esto.

La función para encontrar un búfer le permite especificar si buscar en todos los cuadros o solo en el cuadro actual:

(get-buffer-window &optional BUFFER-OR-NAME ALL-FRAMES)

Sin embargo, la implementación de switch-to-bufferpasa 0 para el ALL-FRAMESargumento, lo que significa que buscará en todos los marcos.

Supongo que podría usar :aroundconsejos get-buffer-windowpara reemplazar ese argumento, si realmente quisiera prevenir globalmente este comportamiento ... pero sospecho que eso rompería otras cosas.


Eso es lo que temía. Podría probar el consejo de agregar alrededor de get-buffer-window, pero no soy muy aficionado a aconsejar funciones ampliamente utilizadas.
MonsieurBanana

Sí, parece probable que cause problemas. Es posible que desee consultar el popwinpaquete como una forma de lidiar con buffers especiales, no estoy seguro de si eso, además de la configuración de ido que ya encontró, podría ser suficiente.
glucas

1
En realidad, puedo haber perdido el bote aquí. Debería echar un vistazo a las secciones del manual de Emacs en 'Elegir ventana' y 'Mostrar funciones de acción'. En particular, el uso de inhibit-switch-frameparece útil. (Todavía no he tenido la oportunidad de experimentar con estas opciones.)
glucas


Gracias, ese hilo SE es muy útil. La documentación display-buffery display-buffer-alisthace que me duela la cabeza, pero es solo cuestión de tiempo hasta que encuentre una solución.
MonsieurBanana
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.