Ich möchte eine einfache Änderung an Emacs vornehmen, damit die Befehle next-buffer
und previous-buffer
(die ich an C-x <RIGHT>
und C-x <LEFT>
gebunden habe, den *Messages*
Puffer überspringt.
Ich benutze Emacs 24 und das Emacs Starter Kit .
Ich habe die folgenden verwandten Fragen und Antworten gelesen, aber sie sind nicht das, was ich will:
Hier sind einige der Gründe, warum sie nicht funktionieren:
*Messages*
nicht töten oder verhindern. (add-to-list 'ido-ignore-buffers "^\*Messages\*"
hilft mit meinem C-x b
( ido-switch-buffer
), ändert aber nicht wie sich next-buffer
und previous-buffer
verhalten. Am einfachsten kann ich einen Rat für beide Funktionen definieren. Hier ist es für next-buffer
. Ähnliches wäre für previous-buffer
. Sie können auch eine Konfigurationsvariable definieren, um das Verhalten zu aktivieren / deaktivieren (oder den Hinweis zu aktivieren / deaktivieren):
Vielleicht können Sie Puffer anders als den String-Namen vergleichen, aber das wird funktionieren. Der Code für den vorherigen Puffer ist fast derselbe. Ich weiß auch nicht, ob es eine Möglichkeit gibt, die ursprüngliche Funktion aufzurufen, ohne den Rat einmal innerhalb des Rates selbst auszulösen, aber der Code funktioniert auch, wenn der Name des Puffers danach getestet wird (wird nur fehlschlagen, wenn Sie ihn gerade haben) one buffer, und es ist der Puffer für Nachrichten, einige Code kann prüfen, ob es nur einen Puffer gibt und nicht next-buffer
erneut aufrufen.
Wenn Sie eine eigenständige Funktion verwenden möchten, die dasselbe tut:
%Vor%Auf diese Weise können Sie die Endlosschleife vermeiden:
%Vor% Dieser Code führt eine Schleife über nicht markierten Puffern ( "^\*"
) aus. Für Ihren Fall (nur *Messages*
vermeiden) wäre es:
Sie können previous-code-buffer
schreiben und nur jedes next-buffer
durch previous-buffer
ersetzen.
Dies ist, was ich benutze, basierend auf Diego's Antwort:
%Vor% Es ist noch nicht großartig, weil es hängen bleibt, wenn es außer der skippable-buffers
I-Liste keine anderen Puffer gibt. Ich benutze C-g
, um aus der Schleife auszubrechen, wenn es als Hackaround passiert.