Jak mogę uniemożliwić komendzie korzystanie z określonych okien?

14

Zazwyczaj mam ramkę podzieloną na cztery okna, z których dwa u dołu są dedykowane mojemu *compilation*i *grep*buforom. Podczas przeglądania błędów kompilacji next-errorostatecznie zastąpię mój *grep*bufor jednym z plików docelowych.

Jak mogę skonfigurować, next-erroraby nie używać okna zawierającego *grep*bufor?

Moim szczególnym przypadkiem użycia jest next-errorpolecenie, ale mile widziane są również bardziej ogólne odpowiedzi.

piwi
źródło

Odpowiedzi:

14

Po drugie proponuję @ Nsukami użycie dedykowanych okien . Ponieważ jest to funkcja, a nie polecenie , set-window-dedicated-pbezpośrednie użycie może być uciążliwe. Za pomocą następującego polecenia i powiązanego przypisania klawiszy możesz przełączać „dedykowanie” dowolnego okna, naciskając 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
źródło
To wygodny sposób na użycie tej dedykowanej funkcji okna! Dzięki, działa jak urok.
piwi
Rzeczywiście, lepiej wewnątrz funkcji + klawisze.
Nsukami _
4

Czy mogę zasugerować dedykowane okno ?

Będziesz musiał poświęcić okna buforom za pomocą tej funkcji:

set-window-dedykowane-p flaga flagi: Ta funkcja oznacza okno jako dedykowane dla bufora, jeśli flaga jest inna niż zero, a w przeciwnym razie nie jest dedykowana.

Dzięki uprzejmości GNU

Nsukami _
źródło