Ich würde es vorziehen, wenn der *compilation*
Puffer immer in seinem eigenen Rahmen bleibt. Wenn ich derzeit jedoch M-x compile
von einem anderen Frame / Fenster aus laufe , wird der Puffer dort auch in einem neuen Fenster angezeigt. Wie kann ich bewirken, dass Emacs stattdessen nur den vorhandenen Frame anheben, in dem der *compilation*
Puffer angezeigt wird?
7
compile.el
haben sich möglicherweise geändert, und ich habe seitdem viele erstellt Änderungen / Verbesserungen an meinen benutzerdefinierten Funktionen, die auf bestimmte Frames für die Pufferanzeige abzielen : stackoverflow.com/questions/18346785/… Sehen Sie nach, ob der erste Link ungefähr dem entspricht, was Sie suchen - wer weiß, er funktioniert möglicherweise sogar noch ohne Änderungen machen.Antworten:
Normalerweise betrachtet Emacs den ausgewählten Frame als den einzigen wiederverwendbaren Frame. Mit anderen Worten, normalerweise durchsucht Emacs den aktuellen ("ausgewählten") Frame nur nach Fenstern, die bereits den anzuzeigenden Puffer enthalten ("wiederverwendbare Fenster"). Was Sie brauchen, ist, dass Emacs den Frame des Kompilierungspuffers als wiederverwendbaren Frame betrachtet:
Das obige Snippet macht alle Frames wiederverwendbar, wenn
display-buffer
der*compilation*
Puffer angezeigt wird . In der Dokumentation vondisplay-buffer-reuse-window
erfahren Sie, welche anderen Wertereusable-frames
empfangen werden können.Dies kümmert sich jedoch nicht um die andere Richtung - das Öffnen eines Codepuffers aus dem Kompilierungsfenster. Wenn Sie beispielsweise einen Puffer durch Drücken eines Links im Kompilierungspuffer öffnen, öffnet Emacs den Puffer im selben Frame wie das Kompilierungsfenster. Das zu ändern ist eine andere Sache. Ich weiß nicht, wie das Verhalten mit der
special-display-buffer-names
Lösung verglichen wird.quelle
Make - Pufferzusammenstellung immer ein spezielles Fenster. Eine Möglichkeit , dies zu tun , ist Option anpassen
special-display-buffer-names
, einschließen"*compilation*"
. Eine andere Möglichkeit besteht darin, die Option anzupassenspecial-display-regexps
und einen regulären Ausdruck einzufügen, der diesem Puffernamen entspricht. (Ich füge den regulären Ausdruck hinzu"[ ]?[*][^*]+[*]"
, der mit allen Puffern übereinstimmt , deren Namen lauten*...*
.)(Siehe auch Option
special-display-frame-alist
, mit der Sie das Verhalten und die Eigenschaften des Rahmens festlegen können, der für solche speziellen Anzeigepuffer verwendet wird.)Emacs wird Ihnen sagen, dass diese Optionen für "Spezialanzeigepuffer" "veraltet" sind, aber Gott sei Dank werden sie weiterhin unterstützt. Sie bieten eine einfache Möglichkeit, das zu tun, was Sie wollen.
Wenn Sie leiden möchten, was Emacs jetzt bevorzugt, passen Sie
display-buffer-alist
stattdessen die Option an. Die Idee ist im Wesentlichen dieselbe (es ist nur eine hässlichere und kompliziertere Benutzeroption).quelle