2011-01-17 11 views
10

mi entorno de trabajo Lisp tiene el marco dividido en dos ventanas, la primera para la codificación principal, la última para mi evaluación de baba.¿Cómo puedo evitar que Emacs redimensione mis ventanas?

Desafortunadamente, cuando cometí algunos errores (porque todavía estoy aprendiendo Lisp: P) el depurador de baba me advierte, y al hacerlo aparece en la ventana inferior que cambia de tamaño automáticamente. sólo para ser más explícito:

ANTES:

_______ 
|  | 
|  | 
_______ 
|_____| 

DESPUÉS:

_______ 
|  | <- decreased in size! 
_______ 
|_____| <- increased in size! 

¿Cómo puedo evitar que mis ventanas de Emacs cambio de tamaño? Quiero que Emacs deje el tamaño de mi ventana igual.

¿Cómo puedo lograr eso?

Gracias! ¡Adiós!

Alfredo

+5

Nota: un usuario de Emacs resistente a la tracción se dibujaría utilizando 'M-x artist'. : P –

+1

Wow ... modo artista ... No tenía idea de que un pequeño juguete tan bonito estuviera incorporado a Emacs ... Gracias Trey! –

Respuesta

8

Usted puede recordar la configuración de la ventana usando el comando M-x-window-configuración de registro (o C-x r w) al principio.

Después de que siempre puede restaurar sus configuraciones utilizando M-x saltar-registrar (o C-x r j).

+0

Gracias a todos, esto es lo más cercano a lo que estaba buscando. No puedo usar el modo ganador debido a un conflicto con el ECB (navegador de códigos Emacs), pero la ventana de configuración para registrar hace el trabajo sucio :) –

4

Si algún código que llame cambia la configuración de la ventana se puede envolver su código con (save-ventana-excursión CUERPO ...)

Si es el depurador que cambia la configuración - pulsar "q" y la vieja configuración será resotrada.

Si desea que el depurador no cambie el tamaño intente agregar un depurador-modo-gancho para restaurar el tamaño de su ventana.

5

Desafortunadamente, el comando principal pop-to-buffer, que es utilizado por casi todos los programas en emacs para cambiar a un búfer en una ventana diferente, tiene el efecto secundario que describió.

Además de todas las demás soluciones hasta el momento, existe un winner mode para deshacer/rehacer cualquier cambio en la configuración de la ventana, en cualquier momento.

+1

upvoted para la sugerencia de modo ganador, el modo ganador es asombroso. – monotux

2

winner-mode es un salvavidas, pero para hacer pop-to-buffer no cambiar el tamaño de la ventana, en primer lugar, hacer

(setq even-window-heights nil) 
1

Para desactivar la ventana de la reducción shrink-window-if-larger-than-buffer, es necesario que haya un no-op. Podrías redefinirlo para que no haga nada, pero si lo aconsejas, tienes la posibilidad de habilitarlo y deshabilitarlo a voluntad.

;; never shrink windows 
(defvar allow-window-shrinking nil 
    "If non-nil, effectively disable shrinking windows by making `shrink-window-if-larger-than-buffer' a no-op.") 
(advice-add 'shrink-window-if-larger-than-buffer 
      :before-while 
      (lambda (&rest args) 
       "Do nothing if `allow-window-shrinking' is nil." 
       allow-window-shrinking)) 

Puede aconsejar a otras funciones que llaman shrink-window-if-larger-than-buffer para activar o desactivar encogimiento:

(advice-add 'some-function-that-resizes-windows 
      :around 
      (lambda (orig &rest args) 
       "enable shrinkage" 
       (let ((allow-window-shrinking t)) 
       (apply orig args)))) 

que tenía un viejo pedazo de código que era esencialmente lo anterior, y tuve ignore-errors envuelto alrededor (apply orig args) para algunos razón olvidada, pero probablemente no sea universalmente necesaria.

N. B. esto usa la nueva API de consejos, que se agregó en Emacs 24.4. La antigua API de consejos puede hacer lo mismo con una sintaxis diferente si necesita usar una versión anterior de Emacs.

Cuestiones relacionadas