Verhindern Sie beim Wechseln des Puffers, dass der Emacs den Frame automatisch wechselt

13

Wenn ich den Puffer wechsle, wechselt der Emacs zu einem vorhandenen Frame, wenn der Puffer dort bereits geöffnet ist.

Ich habe herausgefunden, wie ich das verhindern kann, wenn ich mit ido wechsle:

(setq ido-default-buffer-method 'selected-window)

Aber es ist nicht genug: Zum Beispiel wechselt Emacs bei einem kleinen Fehler automatisch in den Puffer * Backtrace * und wechselt Frames, wenn er bereits geöffnet ist.

Gibt es eine Möglichkeit zu verhindern, dass Emacs vollständig auf einen vorhandenen Frame umschalten?

Monsieur Banana
quelle

Antworten:

3

Hierfür scheint es keine Option zu geben.

Die Funktion gibt einen Puffer zu finden , tut Sie festlegen können , ob in allen Frames suchen oder nur im aktuellen Rahmen:

(get-buffer-window &optional BUFFER-OR-NAME ALL-FRAMES)

Die Implementierung von switch-to-bufferübergibt jedoch 0 für das ALL-FRAMESArgument, was bedeutet, dass es in allen Frames angezeigt wird.

Ich nehme an, Sie könnten :aroundRatschläge verwenden get-buffer-window, um dieses Argument zu ersetzen, wenn Sie dieses Verhalten wirklich global verhindern möchten ... aber ich vermute, das würde andere Dinge kaputt machen.

Glucas
quelle
Das habe ich befürchtet. Ich probiere vielleicht den add-advice um get-buffer-window herum aus, aber ich bin nicht so begeistert davon, weit verbreitete Funktionen zu empfehlen.
MonsieurBanana
Ja, scheint Ärger zu bereiten. Vielleicht möchten Sie sich das popwinPaket ansehen, um mit speziellen Puffern umzugehen. Sie sind sich nicht sicher, ob dies und die Ido-Konfiguration, die Sie bereits gefunden haben, ausreichend sind.
Glucas
1
Eigentlich habe ich das Boot hier vielleicht verpasst. Sie sollten sich die Abschnitte im Emacs-Handbuch unter "Fenster auswählen" und "Aktionsfunktionen anzeigen" ansehen. Insbesondere die Verwendung von inhibit-switch-framescheint sinnvoll. (Ich hatte noch keine Gelegenheit, mit diesen Optionen zu experimentieren.)
glucas
Danke, dieser SE-Thread ist sehr hilfreich. Die Dokumentation für display-bufferund display-buffer-alistmacht mir den Kopf weh, aber es ist nur eine Frage der Zeit, bis ich eine Lösung finde.
MonsieurBanana