cyphejor 20161231.1558(in MELPA)
Shorten major mode names using user-defined rules

概要

長いモード名は貴重なモードラインのスペースを占有してしまいます。

そこで cyphejor.el はルールに従ってモード名を短縮します。

モード名を単語で区切り、 cyphejor-rules で指定されたルールに従って
新しい名前を mode-name に設定します。

どのような名前になるのかは、 cyphejor--cypher 関数で確かめられます。

(let ((cyphejor-rules
       '(:upcase                        ;該当しない単語は頭文字
         ("bookmark"    "→")
         ("buffer"      "β")
         ("diff"        "Δ")
         ("dired"       "δ")
         ("emacs"       "ε")
         ("fundamental" "Ⓕ")
         ("inferior"    "i" :prefix)    ;最初にiがつく
         ("interaction" "i" :prefix)
         ("interactive" "i" :prefix)
         ("lisp"        "λ" :postfix)  ;最後にλがつく
         ("menu"        "▤" :postfix)
         ("mode"        "")             ;modeは表示させない
         ("package"     "↓")
         ("python"      "π")
         ("shell"       "sh" :postfix)
         ("text"        "ξ")
         ("wdired"      "↯δ"))))
  (cyphejor--cypher "emacs-lisp-mode" cyphejor-rules) ; => "ελ"
  (cyphejor--cypher "lisp-interaction-mode" cyphejor-rules) ; => "iλ"
  (cyphejor--cypher "python-mode" cyphejor-rules) ; => "π"
  (cyphejor--cypher "package-menu-mode" cyphejor-rules) ; => "↓▤"
  (cyphejor--cypher "shell-mode" cyphejor-rules) ; => "sh"
  (cyphejor--cypher "dired-mode" cyphejor-rules) ; => "δ"
  (cyphejor--cypher "wdired-mode" cyphejor-rules) ; => "↯δ"
  ;; upcaseが指定してあるので単語がリストにない場合は先頭文字が大文字になる
  (cyphejor--cypher "org-mode" cyphejor-rules)    ; => "O"
  (cyphejor--cypher "sh-mode" cyphejor-rules) ; => "S"
  (cyphejor--cypher "eshell-mode" cyphejor-rules) ; => "E"
  (cyphejor--cypher "reb-lisp-mode" cyphejor-rules) ; => "Rλ"
  )
;;; upcaseをなくすとそのまま出てくる
(let ((cyphejor-rules
       '(("mode"        "")
         ("lisp"        "λ" :postfix))))
  (cyphejor--cypher "emacs-lisp-mode" cyphejor-rules) ; => "emacs λ"
  (cyphejor--cypher "org-mode" cyphejor-rules) ; => "org"
  (cyphejor--cypher "sh-mode" cyphejor-rules) ; => "sh"
  )

実際には常用するメジャーモード名の単語をcyphejor-rulesに含めないと
わかりにくくなるかと思われます。

マイナーモード名も同じくモードラインを占有してしまうので、
cyphejor--cypherの結果をdiminsh.elと併用するといいでしょう。

20150927075308.png
Fig1: lisp-interaction-modeがiλと表示される

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてcyphejorを使う方は
以下のコマンドを実行します。

M-x package-install cyphejor

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name cyphejor

設定 150927071505.cyphejor.el(以下のコードと同一)

(setq
 cyphejor-rules
 '(:upcase
   ("bookmark"    "→")
   ("buffer"      "β")
   ("diff"        "Δ")
   ("dired"       "δ")
   ("emacs"       "ε")
   ("fundamental" "Ⓕ")
   ("inferior"    "i" :prefix)
   ("interaction" "i" :prefix)
   ("interactive" "i" :prefix)
   ("lisp"        "λ" :postfix)
   ("menu"        "▤" :postfix)
   ("mode"        "")
   ("package"     "↓")
   ("python"      "π")
   ("shell"       "sh" :postfix)
   ("text"        "ξ")
   ("wdired"      "↯δ")))
(cyphejor-mode 1)

実行方法

$ wget http://rubikitch.com/f/150927071505.cyphejor.el
$ emacs -Q -f package-initialize -l 150927071505.cyphejor.el


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。