Como posso impedir que um comando use janelas específicas?

14

Normalmente, tenho um quadro dividido em quatro janelas, onde duas na parte inferior são dedicadas aos meus *compilation*e aos *grep*buffers. Ao next-errorprocurar erros de compilação, eventualmente substituirei meu *grep*buffer por um dos arquivos de destino.

Como posso configurar next-errorpara não usar a janela que contém o *grep*buffer?

Meu caso de uso específico é o next-errorcomando, mas respostas mais gerais também são bem-vindas.

piwi
fonte
1
Relacionados: emacs.stackexchange.com/questions/327/...
Malabarba

Respostas:

14

Eu segundo a sugestão de @ Nsukami de usar janelas dedicadas . Como é uma função, não um comando , o uso set-window-dedicated-pdireto pode ser complicado. Com o seguinte comando e a associação de teclas associada, você pode alternar a "dedicação" de qualquer janela pressionando 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
fonte
Agora essa é uma maneira conveniente de usar esse recurso de janela dedicado! Obrigado, funciona como um encanto.
Piwi #:
de fato, melhor dentro de uma função + digitação.
Nsukami _
4

Posso sugerir uma janela dedicada ?

Você terá que dedicar janelas aos buffers usando esta função:

Sinalizador de janela set-window-dedicado-p: Esta função marca a janela como dedicada ao seu buffer se o sinalizador for nulo e não dedicado de outra forma.

Cortesia de gnu

Nsukami _
fonte