minor-modeを簡単に切り替える manage-minor-mode.el Emacs Lisp

使う頻度が高いとは思えませんが、minor-modeを管理するようなelispが無いようだったので作っておきました。

manage-minor-mode1

GitHub: ShingoFukuyama/manage-minor-mode
MELPAからもダウンロードできます。

使い方

  • 1. M-x manage-minor-mode
  • 2. minor-mode専用バッファが表示されます。
  • 3. 目的のminor-modeの上までカーソルを移動し、リターンキーを押すとON/OFFを切り替えられます。

Advanced

以下はminor-mode専用バッファでのキーバインドです。

  • g: バッファの更新
  • e: [E]マークをつけます。現在開いているすべてのバッファ、以降開くすべてのバッファで自動的に有効となります。
  • d: [D]マークをつけます。現在開いているすべてのバッファ、以降開くすべてのバッファで自動的に無効となります。
  • r: マークを消します。

マウス操作

モードラインのいずれかのminor-modeをクリックするとメニューから実行することができます。

manage-minor-mode2

専用バッファの上部に表示されるキーバインドを非表示


(setq manage-minor-mode-always-show-keybind nil)

major-modeごとに有効/無効をあらかじめ指定

以下のようにmajor-modeごとにminor-modeを指定することもできます。

globalはすべてのmajor-modeに作用します。


(setq manage-minor-mode-default
      '((global
         (on   rainbow-mode)
         (off  line-number-mode))
        (emacs-lisp-mode
         (on   rainbow-delimiters-mode eldoc-mode show-paren-mode))
        (js2-mode
         (on   color-identifiers-mode)
         (off  flycheck-mode))))

一括で無効化

専用バッファ上または、対象にするバッファ上で M-x manage-minor-mode-bals とすることで有効となっているminor-modeを一括して無効にします。無効化したものは M-x manage-minor-mode-restore-from-bals で元に戻すことができます。

以下の変数を設定すると、一括無効化の例外を指定できます。


(setq manage-minor-mode-bals-exclude-list
      '((global (recentf-mode global-font-lock-mode delete-selection-mode transient-mark-mode tabbar-mode))
        (text-mode (line-number-mode))
        (org-mode (line-number-mode blink-cursor-mode))))