僕の Emacs はまだ 7 回の変身を残している (はず)
極めたい……!
Emacs の紹介兼設定更新のスクラップです。
利用パッケージ
現状把握から始めます。
基本
leaf, lsp-mode, minadware です。
項目 | パッケージ |
---|---|
プロファイル切り替え | chemacs2 |
パッケージ管理 | leaf.el + leaf-manager.el (package.el, straight.el), auto-package-update |
completing-read | consult + vertico |
LSP | lsp-mode, lsp-ui |
補完 | corfu |
UI 強化
こだわりが出ると思います。
項目 | パッケージ |
---|---|
キーバインド | evil, hydra |
スニペット | tempel |
モードライン | doom-modeline + minions |
Git | git-gutter, magit + forge, blamer |
プロジェクト | projectile |
ウィンドウ |
tab-bar-mode, (tmux ) |
ウィジェット | neotree, centaur-tabs |
改善の余地あり
項目 | パッケージ |
---|---|
アイコン (TUI) | なし |
シェル | vterm 単体 |
VSCode の pane | 探しています |
Distribution は使わないのか
Spacemacs や Doom Emacs は Emacs のリッチな設定セットです。一部の人から絶大な人気を誇ります。
しかし欠点もあります。
- 独自 DSL を多用しており、何が起こっているのか分からない
- パッケージの選択が意外に不自由
各 distribution のデフォルト設定が合わなければ、 1 から設定ファイルを作った方が実は簡単かもしれません。
変身 1: Sticky imenu
VSCode の Sticky Scroll が話題になりました。実は Vim にも Emacs にも同じ機能があるみたいです。へぇ……。より理想的な UI が無いか考えたところ、アウトライン表示のハイライトと現在のソース位置を連動させたいと思いました。
できました (gist)。他力本願です 🙏 なお imenu 項目はソースに出てきた順番で表示します:
(leaf lsp-ui-imenu
:ensure nil
:custom (lsp-imenu-sort-methods . '(position))
また 1 つ欲を満たしてしまった…… (イキり)
変身 2: サイドバーのバッファグループ
上記 lsp-ui-mode-imenu
と neotree を centaur-tabs のバッファグループにまとめてみました:
改めてサイドバーのウィジェットを作ったわけではありません。効率良し!
@
から始まるバッファは、自動的にサイドバーのバッファ一覧に追加されます。今後のウィジェット追加も簡単そうです。
変身 3: ボトムバーのバッファグループ
サイドバーができるなら、ボトムバーだって作れます。画面端にウィンドウを作る関数があります (display-buffer-in-side-window):
(display-buffer-in-side-window buffer '((side . bottom)))
これにより、 vterm
や *scratch*
風のバッファを画面下部に表示できます:
これでほぼ VSCode に匹敵しました! 欠点は、ボトムバーが全く要らないことですね…… (tmux
が上位互換です)
LSP の診断情報などは minibuffer で表示・検索します。
embark
を使えば保存・再表示もできそうです。
変身 5: ハイスペック PC の購入
起動が爆走になります。結局これが一番効果ありました……!