平衡点
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)
としてみたり.
結果
結局,こんな感じ.

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