バッファ内のアクティブなマイナーモードのリストを取得します


14

現在のバッファーでアクティブなマイナーモードのリストを取得するにはどうすればよいですか?

ドキュメントは(info "(elisp)Minor Mode Conventions")言う:

 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.

私は止めます:

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

describe-mode 出典には、次のようなメモがあります。

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

それがまだ有効なポイントかどうかはわかりません...


2
describe-mode現在のバッファー内のアクティブなマイナーモードの適切なリストが表示されませんか?
ドリュー

1
@Drew彼はおそらくプログラムでそれを望んでいるように思えますか?
ナニー

1
@nanny:はい、そうだと思いました。そのケースでは、開始するための一つの場所はのためのコードを見てすることですdescribe-mode- 場合はそうでなければ十分です。
ドリュー

回答:


7

これを試して:

(mapcar #'car minor-mode-alist)

実際、この値はしばしばとは異なることがわかりますminor-mode-list


12

バッファで使用されているマイナーモードを確認するだけで、プログラムでリストを使用する必要がない場合:

M-x describe-mode

このコマンドは、マイナーモードの完全なリストで始まる新しいバッファーを開き、メジャーモードの簡単な説明と、実行された可能性のある親モードを示します。


1
これは、OPの質問に正確に答えることはできないかもしれませんが、この質問を検索したときに私が見つけた最初の結果でした。Drewのコメントは私のユースケースを解決したので、将来の検索者にとって完全な答えに値すると思いました。
Wilduck

+1は、問題に対するより一般的な目的の解決策を示します。 describe-mode特に便利です!
エフスミス2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.