平衡点
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)
としてみたり.
結果
結局,こんな感じ.
時計とか行数は全く表示させていないので,右側がとってもシンプルだけれど,まあ良いか,という.