Liste der aktiven Nebenmodi im Puffer abrufen

14

Wie erhalte ich eine Liste der aktiven Nebenmodi im aktuellen Puffer?

Ärzte (info "(elisp)Minor Mode Conventions")sagen:

 Define a variable whose name ends in ‘-mode’.  We call this the
 "mode variable".  The minor mode command should set this variable.
 The value will be ‘nil’ if the mode is disabled, and non-‘nil’ if
 the mode is enabled.  The variable should be buffer-local if the
 minor mode is buffer-local.

Ich höre auf mit:

(dolist (m minor-mode-list)
  (when (symbol-value m)
    (push m modes)))

describe-mode Quellen haben Hinweise, dass:

;; Older packages do not register in minor-mode-list but only in
;; minor-mode-alist.

Ich weiß nicht, ob dieser Punkt noch gültig ist ...

Gavenkoa
quelle
2
Gibt describe-modeIhnen keine angemessene Liste der aktiven Nebenmodi im aktuellen Puffer?
Drew
1
@ Draw Es hört sich so an, als ob er es vielleicht programmatisch will?
Kindermädchen
1
@nanny: Ja, das habe ich mir gedacht. In diesen Fällen wäre ein Ausgangspunkt, den Code zu überprüfen describe-mode- wenn dies ansonsten angemessen ist.
Drew

Antworten:

7

Versuche dies:

(mapcar #'car minor-mode-alist)

In der Tat werden Sie feststellen, dass dieser Wert häufig von abweicht minor-mode-list.

PythonNut
quelle
12

Wenn Sie nur sehen möchten, welche Nebenmodi in einem Puffer verwendet werden, die Liste jedoch nicht programmgesteuert verwenden müssen, verwenden Sie:

M-x describe-mode

Dieser Befehl öffnet einen neuen Puffer, der mit einer vollständigen Liste Ihrer Nebenmodi beginnt und eine kurze Beschreibung der Hauptmodi sowie aller möglicherweise ausgeführten übergeordneten Modi enthält.

Wilduck
quelle
1
Dies beantwortet möglicherweise nicht genau die Frage des OP, aber dies war das erste Ergebnis, das ich bei der Suche nach dieser Frage gefunden habe. Da Drews Kommentar meinen Anwendungsfall löste, dachte ich, dass er eine vollständige Antwort für zukünftige Suchende verdient.
Wilduck
+1 zur Demonstration der allgemeineren Lösung des Problems. describe-modeist besonders nützlich!
Ephsmith