Nano Modelineを試す

Emacs設定ファイルは、 Ladicle’ s Emacs Configuration ver.2022 を参考にしているのですが、最近モードラインが doom-modelineから nano-modelineに変更されていたので私も試してみることにしました。

nano-modeline

Ladicle’ s さんの設定で使われているパッケージは、nano-modelineは、GNU Emacs / N Λ NO という GNU Emacs 用の設定ファイルのセットに含まれています。

Ladiclsさんの設定をコピペするだけで簡単に確認することができます。

情報量は減りますがじつにシンプルでなかなかおもしろいと感じました。ただ残念ながら Evil-modeには対応していないようです。

doom-nano-modeline

いろいろ探していると Evil対応のパッケージが見つかりました。doom-nano-themeとともに Doom-emacs用として公開されているものです。

残念ながら themeパッケージは反映できませんでしたが modelineの方は流用できました。スクショと設定ファイルとを公開しておきます。

Screen Shot

カスタマイズ

デフォルトのままでも悪くはなかったのですが、とりあえず自分好みの色設定に変更しています。

私の場合、Veiw-mode 代わりに Evilを導入しており、 [insert-state = emacs-state] という使い方をしているので必要なものだけ変更しています。

(leaf doom-nano-modeline
  :doc "Nice look modeline based on N Λ N O"
  :url "https://github.com/ronisbr/doom-nano-modeline"
  :el-get "ronisbr/doom-nano-modeline"
  :hook (emacs-startup-hook . doom-nano-modeline-mode)
  :custom-face
  (region                                    . '((t (:background "#6272a4" :extend t))))
  (hl-line                                   . '((t (:background "#3B4252" :extend t))))
  (doom-nano-modeline-active-face            . '((t (:foreground "#f8f8f2" :background "#44475a" :weight bold))))
  (doom-nano-modeline-evil-emacs-state-face  . '((t (:foreground "#f4a460" :background "#6272a4" :weight bold))))
  (doom-nano-modeline-evil-normal-state-face . '((t (:foreground "#adff2f" :background "#3cb371" :weight bold))))
  (doom-nano-modeline-evil-visual-state-face . '((t (:foreground "#e0ffff" :background "#4682b4" :weight bold))))
  (doom-nano-modeline-cursor-position-face   . '((t (:foreground "#b0b8d1" :background "#44475a"))))
  (doom-nano-modeline-major-mode-face        . '((t (:foreground "#b0b8d1" :background "#44475a"))))
  (doom-nano-modeline-vc-branch-name-face    . '((t (:foreground "#b0b8d1" :background "#44475a"))))
  :preface
  (leaf hide-mode-line
	:doc "Hide modeline in current buffer"
	:ensure t
	:hook (after-init-hook . global-hide-mode-line-mode)))

hid-mode-line

neotreeや imenu-list などの場合は、何故か Emacsデフォルトのモードラインが表示されてしまうので、hide-mode-lineパッケージをインストールして強引に消しています。

同様にサイドバー表示のコンテンツにはヘッダータイトルもうざいので下記のように非表示にしています。

(defun neo-hide-nano-header ()
  "Hide nano header."
  (interactive)
  (setq header-line-format ""))
  
(add-hook 'neotree-mode-hook 'neo-hide-nano-header)
(add-hook 'imenu-list-major-mode-hook 'neo-hide-nano-header)

issues

ちょっと不便かなと思うのは、Input Method の ON/OFF表示がないことと文字コード&改行情報が非表示であることです。

IMEの方は、ON/OFFでカーソルの色を変えているのでさほど不自由はありません。シンプルに割り切ることで存在価値があると思うので難しい課題ですができればカスタマイズしたいですね。

GitHubの issues に要望がでているようなので対応が実現するのを楽しみに待っています。