Emacs のバッファ下部に表示されるモードライン関連の設定をここにまとめている。このメニューの並びとかはどこかで直した方が良さそう。
hide-mode-line は mode-line を隠してくれるパッケージ。ここでは neotree-mode-hook で引っ掛けて Neotree では mode-line を隠すように設定している
(el-get-bundle hlissner/emacs-hide-mode-line)
(add-hook 'neotree-mode-hook #'hide-mode-line-mode)
レシピは自前で用意している
(:name emacs-hide-mode-line
:type github
:description "minor mode that hides/masks your modeline."
:pkgname "hlissner/emacs-hide-mode-line"
:minimum-emacs-version (24 4))
他にも mode-line の表示が不要なモードとかってありそうだけど特に思い付かないから今のところ Neotree 専用になっている。
今だと i3bar に時計が表示されていていつもそれを見るので mode-line の日時表示は要らないな〜と思ったので非表示にした
(custom-set-variables '(display-time-24hr-format t))
(display-time-mode -1)
表示していたころの名残りで時計の表示形式は24時間表記の設定。表示する場合、「午前」とか「午後」とかの表示邪魔だしね。
smart-mode-line は mode-line をセクシーな感じにしてくれるパッケージ。というわけで昔入れていたけどもう使ってない。一応コードの残骸があったから一旦残しておく。
多分アイコン表示周りをゴリゴリ設定するのがだるくなって doom-modeline に乗り換えたんだと思う。
;; (el-get-bundle smart-mode-line)
;; (defvar sml/no-confirm-load-theme t)
;; (defvar sml/theme 'dark)
;; (sml/setup)
;; major-mode
;; (add-hook 'emacs-lisp-mode-hook (lambda () (setq mode-name (all-the-icons-fileicon "elisp"))))
;; (add-hook 'enh-ruby-mode-hook (lambda () (setq mode-name (concat "e" (all-the-icons-alltheicon "ruby-alt")))))
;; (add-hook 'ruby-mode-hook (lambda () (setq mode-name (all-the-icons-alltheicon "ruby-alt"))))
;; (add-hook 'vue-mode-hook (lambda ()
;; (make-local-variable 'mmm-submode-mode-line-format)
;; (setq mmm-submode-mode-line-format "~M:~m")
;; (make-local-variable 'mmm-buffer-mode-display-name)
;; (setq mmm-buffer-mode-display-name "V")))
;; (add-hook 'js-mode-hook (lambda () (setq mode-name "")))
;; (add-hook 'pug-mode-hook (lambda () (setq mode-name (all-the-icons-fileicon "pug"))))
;; (add-hook 'css-mode-hook (lambda () (setq mode-name (all-the-icons-faicon "css3"))))
;; (add-hook 'twittering-mode-hook (lambda () (setq mode-name (all-the-icons-faicon "twitter-square"))))
;; (add-hook 'org-mode-hook (lambda () (setq mode-name (all-the-icons-fileicon "org"))))
diminish は minor-mode の表示をカスタマイズするためのモード。
これも昔使ってたけど今は使ってない。というか最近はマイナーモードを mode-line で表示してない。表示しなくなったから要らなくなった感じ。
el-get-bundle で入れて require したら有効になる
(el-get-bundle diminish)
(require 'diminish)
なおレシピは自前で用意している
(:name diminish
:description "An Emacs package that diminishes the amount of space taken on the mode line by the names of minor modes."
:type github
:url "https://github.com/emacsmirror/diminish"
:pkgname "emacsmirror/diminish"
:features diminish)
各パッケージが読まれた後に指定した表示が設定されるようにするマクロを書いている。
(defmacro my/diminish (file mode &optional new-name)
"https://github.com/larstvei/dot-emacs/blob/master/init.org"
`(with-eval-after-load ,file
(diminish ,mode ,new-name)))
https://github.com/larstvei/dot-emacs/blob/master/init.org に書かれているのを流用しただけであるはずだが、リンク先にその記述が見当たらないな……。
上で用意したマクロを用いて各マイナーモード毎の設定を行っていた。今は使ってないので全部コメントアウトしている
;; (my/diminish "git-gutter" 'git-gutter-mode (all-the-icons-octicon "git-compare"))
;; (my/diminish "yasnippet" 'yas-minor-mode " Ys")
;; (my/diminish "whitespace" 'whitespace-mode "◽")
;; (my/diminish "whitespace" 'global-whitespace-mode "◽")
;; (my/diminish "tempbuf" 'tempbuf-mode "")
;; (my/diminish "flycheck" 'flycheck-mode "")
;; (my/diminish "zoom" 'zoom-mode "")
;; (my/diminish "rainbow" 'rainbow-mode "🌈")
;; (my/diminish "projectile-rails" 'projectile-rails-mode "🛤")
;; (my/diminish "company" 'company-mode "")
;; (my/diminish "ElDoc" 'eldoc-mode "")
結構頑張ったけど絵文字周りで思うような表示にならなかったりして最終的にはマイナーモードを mode-line に表示しないようになっている。
使ってる minor-mode どうやって把握したりしたらいいんだろうね。ま、表示されなくてもなんとなくで把握しているから、困ってはいないんだけど。
doom-modeline は Emacs の mode-line を装飾するパッケージの1つ。結構スッキリした見た目になるので気に入ってる。
el-get のレシピは自前で用意している
(:name doom-modeline
:website "https://github.com/seagle0128/doom-modeline"
:description "A fancy and fast mode-line which was from DOOM Emacs, but it's more powerful and much faster."
:depends (shrink-path compat)
:type github
:pkgname "seagle0128/doom-modeline")
依存している shrink-path と nerd-icons も自前でレシピを用意している
(:name shrink-path
:website "https://gitlab.com/bennya/shrink-path.el"
:description "Small utility functions that allow for fish-style trunctated directories in eshell and for example modeline."
:depends (dash f s)
:type git
:url "https://gitlab.com/bennya/shrink-path.el.git")
(:name nerd-icons
:website "https://github.com/rainstormstudio/nerd-icons.el"
:description "A Library for Nerd Font icons."
:type github
:branch "main"
:pkgname "rainstormstudio/nerd-icons.el")
そして以下でインストール
(el-get-bundle doom-modeline)
(doom-modeline-mode 1)
デフォルトだと 12 なんだけどそれだと短かくて何のブランチかよくわからんので 30 まえのばしている。
(setq doom-modeline-vcs-max-length 30)
これは doom-modeline 専用の設定ではないけど doom-modeline で見た目をカッコよくしているのでこっちに設定を書いている。
(display-battery-mode 1)
nerd-icons に依存しているのでそれの設定もここに書いておく
(el-get-bundle nerd-icons)
(require 'nerd-icons)
;; if nerd-icons are not installed, run M-x nerd-icons-install-fonts
if nerd-icons are not installed, run M-x nerd-icons-install-fonts
と書いているように
nerd-icons をインストールしていない場合は nerd-icons-install-fonts
を叩いてインストールしてあげないといけない
また dired でもアイコン表示をしたいので nerd-icons-dired
を導入している。
(:name nerd-icons-dired
:website "https://github.com/rainstormstudio/nerd-icons-dired"
:description "Use nerd-icons for Dired"
:type github
:pkgname "rainstormstudio/nerd-icons-dired"
:depends (nerd-icons))
(el-get-bundle nerd-icons-dired)
(add-hook 'dired-mode-hook #'nerd-icons-dired-mode)
doom-modeline-github
を t にしたら GitHub の通知数も表示されるらしいがちょっと試しに t にしているけどどうも表示されない。
あとはメジャーモード名はアイコンの方があるから消したいな。
doom-modeline-def-modeline
で自分用に作れば良さそうな雰囲気はある
多分 mode-line 周りはもうちょっと整理した方が設定は読み易いんだろうなという気がしている