¿Cómo puedo evitar que un comando use ventanas específicas?

14

Por lo general, tengo un marco dividido en cuatro ventanas, donde dos en la parte inferior están dedicadas a mi *compilation*y a los *grep*buffers. Al buscar errores de compilación, next-erroreventualmente reemplazará mi *grep*búfer con uno de los archivos de destino.

¿Cómo puedo configurar next-errorpara no usar la ventana que contiene el *grep*búfer?

Mi caso de uso específico es el next-errorcomando, pero también se aceptan respuestas más generales.

piwi
fuente

Respuestas:

14

Secundo la sugerencia de @ Nsukami de usar ventanas dedicadas . Dado que es una función, no un comando , usar set-window-dedicated-pdirectamente puede ser engorroso. Con el siguiente comando y la asociación de teclas asociada, puede alternar la "dedicación" de cualquier ventana presionando C-c t:

(defun toggle-window-dedicated ()
  "Control whether or not Emacs is allowed to display another
buffer in current window."
  (interactive)
  (message
   (if (let (window (get-buffer-window (current-buffer)))
         (set-window-dedicated-p window (not (window-dedicated-p window))))
       "%s: Can't touch this!"
     "%s is up for grabs.")
   (current-buffer)))

(global-set-key (kbd "C-c t") 'toggle-window-dedicated)
itsjeyd
fuente
¡Ahora es una forma conveniente de usar esta función de ventana dedicada! Gracias, funciona como un encanto.
Piwi
de hecho, mejor dentro de una función + keybing.
Nsukami _
4

¿Puedo sugerir una ventana dedicada ?

Tendrá que dedicar ventanas a los buffers con esta función:

bandera de ventana set-window-dedicated-p: esta función marca la ventana como dedicada a su búfer si la bandera no es nula y, de lo contrario, no está dedicada.

Cortesía de GNU

Nsukami _
fuente