質問
どうでしょリストのマイナモードをemacs
解決
C-h m
またはM-x describe-mode
は、すべてのアクティブな副モード(主要なモード)とそれぞれの簡単な説明を示します。
他のヒント
すべてのマイナーモードコマンドのリストは、変数<のhref =「http://www.gnu.org/software/emacs/manual/html_node/elisp/Minor-Modes.html」のrel =」に保存されていますnoreferrer "> minor-mode-list
の。彼らはアクティブな方や、通常は同じ名前の変数をチェックすることによって行われていないかどうかを見つけ出します。ですから、このような何かを行うことができます:
(defun which-active-modes ()
"Give a message of which minor modes are enabled in the current buffer."
(interactive)
(let ((active-modes))
(mapc (lambda (mode) (condition-case nil
(if (and (symbolp mode) (symbol-value mode))
(add-to-list 'active-modes mode))
(error nil) ))
minor-mode-list)
(message "Active modes are %s" active-modes)))
注:現在のバッファのために、この唯一の作品(マイナーモードでのみ、特定のバッファで有効にする可能性があるため)。
describe-mode
は何とか有効にマイナーモードのリストを思い付くことができ、なぜ私ではないだろうか?だから、そのソースコードを読んだ後、私はそれがminor-mode-list
とminor-mode-alist
両方からアクティブマイナーモードのリストを取得することを実現しました。サードパーティ製を使用して、私は、このコードに付属の dash.el
のリスト操作ライブラリます:
(--filter (and (boundp it) (symbol-value it)) minor-mode-list)
ですから、例えば、 -each
使用し、すべてのマイナモードを無効にしますA>:
(--each (--filter (and (boundp it) (symbol-value it)) minor-mode-list)
(funcall it -1))
それ以外のEmacsを再起動するか、メモリによってそれらを有効にする必要があります、変数にマイナーモードのリストを保存することを忘れないでください。
ここでは、既に他の回答で対処されている方法のいくつかに似たシンプルな代替スニペットがあります:
(delq nil
(mapcar
(lambda (x)
(let ((car-x (car x)))
(when (and (symbolp car-x) (symbol-value car-x))
x)))
minor-mode-alist))
したい場合 プログラム いすべてのバッファーとして一定モード、そして最高の、最もば最、溶液として
(dolist ($buf (buffer-list (current-buffer)))
(with-current-buffer $buf
(when some-buffer-local-minor-or-major-mode-variable-you-want-to-find
(message "x %s" $buf))))
では、次の操作を実行します:
- リスト取得のすべてのバッファによ
buffer-list
, では、現在のバッファの先頭のリストであり、通常はんだのcurrent-buffer
パラメータのない場合。 - ループをバッファのリストを割り当て各バッファ名の変数
$buf
. - 使用
with-current-buffer $buf
えEmacsすべてのコード内で体を動かして行く必要があるとしていた内部バッファ$buf
代わりにそのバッファーだっ表示画面になります。 when <some mode variable>
は、正しい方向でチェックがモードが有効も利用できますif
その他の方法。どちらの目標は、チェックの場合、マイナーモードのメインモードの変数に設定のバッファです。ほとんどすべてのモードの定義の変数を介"を定義する"aモード 自動的に 原因として作バッファローカル変数のモードはどこです。とに決めなければならない標準の変数は、自身のソースコードをどのようにいくのか"を切り替え"コードの決定方法を切り替えてあります。99%使用の存在をmodenameの変数となければならないであることを報告していバグのモードの著).例えば、チェックがバッファが空白文字モードは、言うwhen whitespace-mode
.- その後、それだけで出力メッセージのメッセージバッファに"x"が付けの名称をバッファのモードで活躍しました。そういう自分の身のコードは、何やってみたかったのを発見したバッファです。
楽しめます!以降大きいので、クリーナー lispコード!