Comment listez-vous les modes mineurs actifs dans emacs?
emacs
minor-mode
Lecture seulement
la source
la source
boundp
place desymbolp
vous pouvez vous débarrasser du fichiercondition-case
.describe-mode
peut en quelque sorte proposer une liste des modes mineurs activés, pourquoi je ne pourrais pas? Donc, après avoir lu son code source, j'ai réalisé qu'il obtenait la liste des modes mineurs actifs à la foisminor-mode-list
etminor-mode-alist
. En utilisant ladash.el
bibliothèque de manipulation de liste tierce , je suis venu avec ce code:Ainsi, par exemple, pour désactiver tous les modes mineurs, utilisez
-each
:N'oubliez pas de sauvegarder la liste des modes mineurs dans une variable, sinon vous devrez redémarrer Emacs ou les activer par mémoire.
la source
Si vous voulez faire quelque chose par programme avec tous les tampons qui ont un certain mode actif, alors la meilleure solution intégrée, la plus minimaliste, la plus propre est la suivante:
Il fait ce qui suit:
buffer-list
, avec le tampon actuellement actif en tête de la liste (il est donc traité en premier, généralement ce que vous voulez, mais laissez de côté lecurrent-buffer
paramètre si vous ne vous en souciez pas).$buf
.with-current-buffer $buf
pour dire à Emacs que tout le code dans le corps doit fonctionner comme s'il s'exécutait à l'intérieur du tampon$buf
au lieu du tampon que vous affichez réellement à l'écran.when <some mode variable>
est la bonne façon de vérifier si un mode est activé; vous pouvez également utiliserif
et d'autres méthodes de ce type. Dans tous les cas, le but est de vérifier si une variable de mode principal d'un mode mineur ou majeur est définie dans le tampon. Presque tous les modes définissent une variable en "définissant" un mode, ce qui les amène automatiquement à créer une variable locale de tampon nommée d'après le mode, ce qui fonctionne. Et s'ils n'ont pas de variable standard, regardez leur propre code source pour voir comment leur code "bascule" détermine comment les activer et les désactiver. 99% d'entre eux utilisent l'existence de la variable de leur nom de mod (et s'ils ne le font pas, je suggère de signaler cela comme un bogue à l'auteur du mode). Par exemple, pour vérifier si un tampon a le mode espace blanc actif, vous diriezwhen whitespace-mode
.Prendre plaisir! Vers un code lisp plus grand et plus propre!
la source
Voici un extrait de code alternatif simple similaire à certaines des méthodes qui ont déjà été abordées dans d'autres réponses:
la source