Wie listet man die aktiven Nebenmodi in Emacs auf?
emacs
minor-mode
Schreibgeschützt
quelle
quelle
boundp
anstelle von könnensymbolp
Sie die loswerdencondition-case
.describe-mode
kann irgendwie eine Liste der aktivierten Nebenmodi erstellen, warum konnte ich nicht? Nachdem ich den Quellcode gelesen hatte, stellte ich fest, dass er die Liste der aktiven Nebenmodi vonminor-mode-list
und erhältminor-mode-alist
. Unter Verwendung derdash.el
Listenmanipulationsbibliothek eines Drittanbieters kam ich mit folgendem Code:Um beispielsweise alle Nebenmodi zu deaktivieren, verwenden Sie
-each
:Vergessen Sie nicht, die Liste der Nebenmodi in einer Variablen zu speichern, da Sie sonst Emacs neu starten oder im Speicher aktivieren müssten.
quelle
Wenn Sie programmgesteuert etwas mit allen Puffern tun möchten , für die ein bestimmter Modus aktiv ist, lautet die beste, minimalistischste, sauberste und integrierte Lösung wie folgt:
Es macht folgendes:
buffer-list
, wobei der aktuell aktive Puffer am Anfang der Liste steht (daher wird er zuerst behandelt, normalerweise das, was Sie möchten, aber lassen Sie dencurrent-buffer
Parameter weg, wenn Sie sich nicht darum kümmern).$buf
.with-current-buffer $buf
Sie diese Option, um Emacs mitzuteilen, dass der gesamte Code im Body so ausgeführt werden soll, als würde er im Puffer ausgeführt,$buf
anstatt in dem Puffer, den Sie wirklich auf dem Bildschirm anzeigen.when <some mode variable>
ist der richtige Weg, um zu überprüfen, ob ein Modus aktiviert ist; Sie können auchif
und andere solche Methoden verwenden. In beiden Fällen besteht das Ziel darin, zu überprüfen, ob die Hauptmodusvariable eines Neben- oder Hauptmodus im Puffer festgelegt ist. Fast alle Modi definieren eine Variable über das "Definieren" eines Modus, wodurch sie automatisch eine pufferlokale Variable erstellen, die nach dem Modus benannt ist. So funktioniert das. Und wenn sie keine Standardvariable haben, sehen Sie sich ihren eigenen Quellcode an, um zu sehen, wie ihr "Umschalt" -Code bestimmt, wie sie ein- und ausgeschaltet werden. 99% von ihnen verwenden die Existenz der Variablen ihres Modenamens (und wenn nicht, schlage ich vor, dies dem Autor des Modus als Fehler zu melden). Um beispielsweise zu überprüfen, ob in einem Puffer der Leerzeichenmodus aktiv ist, würden Sie sagenwhen whitespace-mode
.Genießen! Weiter zu größerem und saubererem Lisp-Code!
quelle
Hier ist ein einfaches alternatives Snippet, das einigen Methoden ähnelt, die bereits in anderen Antworten behandelt wurden:
quelle