平衡点
2014/12/20
_ モードラインのダイエット (2/n)
昨日 の続き。
DDSKK のモード表示,その2
昨日の advice に付け加えて,安直だけれど major-mode の切替時に一度 skk を呼ぶことで modeline を更新することに. ~/.skk に
(defadvice skk-make-indicator-alist
    (after my:set-skk-default-indicator activate)
  (dolist (elem
           '((abbrev " [aA]" . "--[aA]:")
             (latin " [_A]" . "--[_A]:")
             (default " [--]" . "--[--]:")))
    (setq ad-return-value
          (append (cons elem nil)
                  (delq (assoc (car elem) ad-return-value) ad-return-value)))))
~/.emacs.d/init.el に
(defun my:update-modeline-for-ddskk ()
  ""
  (progn
    (skk-mode) (skk-mode)))
(add-hook 'after-change-major-mode-hook 'my:update-modeline-for-ddskk)
かっこ悪いなぁ….トグルする関数無かったっけ?
elscreen
上に TAB を表示させているので,modeline に番号を表示する必要はない. modeline に番号を表示するかどうかについての設定は
(setq elscreen-display-screen-number nil)
で良い.
良い…のだが,初回起動時に常に mode-line-format が更新されている. これは require された時に
(let ((point (memq 'mode-line-position mode-line-format))
      (elscreen-mode-line-elm '(elscreen-display-screen-number
                                (" " elscreen-mode-line-string))))
  (when (null (member elscreen-mode-line-elm mode-line-format))
    (setcdr point (cons elscreen-mode-line-elm (cdr point)))))
が実行されているから. 安直にはこれをコメントアウトすれば良いのだけれど,なんか良い方法無いかなぁ….
major-mode, minor mode の表示設定
カスタマイズする際には以下を参考に
- mode-lineのモード情報をコンパクトに表示する - Life is very short
- Hiding and replacing modeline strings with clean-mode-line - Mastering Emacs
考えてみれば minor-mode の表示は見ていないので,全部非表示にしても全く問題無い.というわけで, ~/.emacs.d/init.el に
(defvar my:mode-line-cleaner-alist
  '(
    ;; major,
    (global-whitespace-mode . "")
    (lisp-interaction-mode  . "LI")
    (emacs-lisp-mode        . "EL")
    ;; ...
    ))
(defun my:clean-mode-line ()
  (interactive)
  (setq minor-mode-alist nil)
  (loop for (mode . mode-str) in my:mode-line-cleaner-alist
        do
        (when (eq mode major-mode)
          (setq mode-name mode-str))))
(add-hook 'after-change-major-mode-hook 'my:clean-mode-line)
としてみたり.
結果
結局,こんな感じ.

時計とか行数は全く表示させていないので,右側がとってもシンプルだけれど,まあ良いか,という.
[ツッコミを入れる]