Wie kann ich verhindern, dass ein Befehl bestimmte Fenster verwendet?

14

Normalerweise habe ich einen Rahmen, der in vier Fenster aufgeteilt ist, wobei zwei unten meinem *compilation*und den *grep*Puffern gewidmet sind. Ersetzt beim Durchsuchen von Kompilierungsfehlern next-errormöglicherweise meinen *grep*Puffer durch eine der Zieldateien.

Wie kann ich konfigurieren next-error, dass das Fenster mit dem Puffer nicht verwendet wird *grep*?

Mein spezieller Anwendungsfall ist der next-errorBefehl, aber auch allgemeinere Antworten sind willkommen.

Piwi
quelle

Antworten:

14

Ich schließe mich @ Nsukamis Vorschlag an, dedizierte Fenster zu verwenden . Da es sich um eine Funktion und nicht um einen Befehl handelt , kann die set-window-dedicated-pdirekte Verwendung umständlich sein. Mit dem folgenden Befehl und der zugehörigen Tastenbelegung können Sie die "Dedicatedness" eines Fensters durch Drücken von umschalten 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
quelle
Jetzt können Sie diese spezielle Fensterfunktion auf bequeme Weise verwenden! Danke, es funktioniert wie ein Zauber.
Piwi
in der Tat besser in einer Funktion + Tastenkombination.
Nsukami _
4

Darf ich Dedicated-Window vorschlagen ?

Mit dieser Funktion müssen Sie den Puffern Fenster zuweisen:

set-window-dedicated-p-Fenster-Flag: Diese Funktion markiert das Fenster als seinem Puffer zugeordnet, wenn das Flag nicht null ist, und andernfalls als nicht zugeordnet.

Mit freundlicher Genehmigung von Gnu

Nsukami _
quelle