Obter lista de modos secundários ativos no buffer


14

Como obter uma lista dos modos secundários ativos no buffer atual?

Os documentos (info "(elisp)Minor Mode Conventions")dizem:

 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.

Eu paro com:

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

describe-mode fontes apontam que:

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

Não sei se esse ponto ainda é válido ...


2
Não describe-modefornece uma lista adequada dos modos secundários ativos no buffer atual?
Drew

11
@ Drew Parece que ele talvez queira programaticamente?
Babá20 /

11
@ nanny: Sim, eu adivinhei isso. Nesse caso, um ponto de partida seria procurar o código describe-mode- se isso for adequado.
Tirou

Respostas:


7

Tente o seguinte:

(mapcar #'car minor-mode-alist)

De fato, você descobrirá que esse valor geralmente difere de minor-mode-list.


13

Se você está apenas olhando para ver quais modos secundários estão sendo usados ​​em um buffer, mas não precisa usar a lista, use programaticamente:

M-x describe-mode

Este comando abrirá um novo buffer que começa com uma lista completa dos seus modos secundários, além de fornecer uma breve descrição dos modos principais e de qualquer modo pai que possa ter sido executado.


11
Embora isso possa não responder exatamente à pergunta do OP, esse foi o primeiro resultado que encontrei ao pesquisar essa pergunta. Como o comentário de Drew resolveu meu caso de uso, achei que merecia uma resposta completa para futuros pesquisadores.
Wilduck

+1 para demonstrar a solução de propósito mais geral para o problema. describe-modeé especialmente útil!
ephsmith
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.