こんにちは、Emacs使いのよんたです。
ちょっと前に入社しました🎉
新たな環境で新たなEmacsパッケージを入れることが多くなっています。
そこで本稿ではEmacsで新しいことをしたいときにカスタマイズする手順を紹介します。
Emacs使いの方には「へー、そんなカスタマイズ方法があるんだ」と参考になれば幸いです。
またEmacs以外使いの方にも、読んで「へー、Emacsって自由でおもしろそう」と思っていただければ嬉しい限りです。
パッケージを探す
まずはやりたいことのパッケージを探します。
例えば、
- Elm用の開発環境がほしい
- ファイルツリーを表示したい
- GitのCOMMIT_EDITMSGに色をつけたい
なんかです。
開発環境なら言語用のメジャーモードやLSPモード、さらにはLinter・Formatterのマイナーモードや設定がほしいでしょう。
ファイルツリーならなんらかの外部パッケージがありそうです。
Gitコミットのようなよくあるものなら、内部パッケージがあるかもしれません。
これらに対して、自分は主に以下のような手を使って探しています。
MELPAトップページでサーチ&ソート
- DL数があって便利
- GitHubリンクもあって最高
ChatGPTに聞く
- 「EmacsでElm用の開発環境を整えたいんだけど、どんなパッケージがおすすめ?」などと聞くとすぐ答えてくれる
- LLM便利!
Google検索してブログとかを漁る
- 最近は古い情報ばかりであまり使わなくなりました……、寂しい
パッケージを比較する
MELPAの検索やChatGPTの回答は、たいてい複数のパッケージが見つかります。
そこでどれが便利か自分の目的に合うかを調査・比較します。
私は以下のような点を注目して調べています。
GitHubのREADMEを読む
- 特にスクリーンショットがあるとわかりやすくて好印象
- どんなカスタマイズができそうか
- 最終commitはいつで、いまもメンテナンスされているか
MELPAのDL数・GitHubのスター数
- 人気があるのにはそれなりに理由があり、信頼できる数値として見ています
モダンな実装さ、ソースコードの短さ
- 実装が巨大なレガシーパッケージはどうしても壊れやすい印象があります
- 特に最近はEmacs標準機能の追加・強化が最近多く、
モダンでシンプルなパッケージがどんどん出てきている印象です1
パッケージをインストールしてみる
どのパッケージを使うかを1つか2つに絞ったら、実際にインストール・カスタマイズして試してみます。
私は設定にleaf.elを採用しているので、これでインストール&カスタマイズを書きます。
インストールには、:ensure t
つきleaf項をeval-region
で実行したり、package.elのlist-package
を使ってリストから選択・インストールしたりしています。
leaf.elでのインストール
(leaf elm-mode :ensure t) ;; この行を選択しeval-regionしたりする
package.elのlist-package
によるインストール
-
M-x list-package
で呼び出し -
i
でインストールするパッケージを選択 -
x
で実行 - 他に便利なコマンドとして
-
d
でデリーとするパッケージを選択 -
U
でアップデート可能パッケージすべてを選択
-
パッケージをカスタマイズして動作を試す
カスタマイズも同じくleaf.elを使って行います。
scratchバッファーにてsetq
やadd-hook
で試すことも多いです。
このとき、カスタマイズする方法は以下のように探して実行します。
GitHubなどのREADMEを読んでカスタマイズ方法を調べる
- たいてい基本的な使い方が載っている
- カスタマイズ可能な変数の一覧もあったりする
- おすすめのカスタマイズ例があると好印象
ソースコードをdefcustom
で検索してカスタム変数をすべて見てみる
- なんだかんだこの方法を使うことが多い2
- カスタマイズ可能なカスタム変数がすべてわかる
- カスタマイズするとどんな動作が変わるのか、ソースコードですぐ追える
- 他にも、設定に使える
XXX-map
やXXX-mode
の定義を見たりする
実際にカスタマイズして動作を見てみる
- インストールと同じく、leaf.elで書いた設定を
eval-region
で実行する - scratchバッファーにて
setq
やadd-hook
を書き、C-j
(eval-print-last-sexp
)で実行する- emacs-lispとしての補完やドキュメント表示も利用できる
- コードを実行すると、Emacsの動作がすぐに変わり便利
ちなみに、customize-group
は使っていない
Emacsにはカスタム変数を見るためにcustomize-group
という関数も用意されています。
TUI形式でカスタム変数の一覧表示・変更ができます。
しかし私はまったく使っていません。
ドキュメントだけではわからないことも多く、すぐ追えるソースコードを見ることが多いです。
まとめ
以上が私のEmacsカスタマイズ方法の手順です。
Emacsのカスタマイズはプログラミングそのものであり、とても楽しいです。
みなさんもEmacsのカスタマイズ沼にはまってくれれば幸いです。
ちなみにパッケージにはオシャレな名前がついていることもあり、検索するのが難しいと思っています。
例えば、
- copilot.el
- Copilot用パッケージだな!
- Embark
- 直訳すると「乗船」など
- 🤔🤔🤔🤔🤔
となったりします。
他の方はどうやってパッケージを探したり、インストール・カスタマイズしていますか?
ぜひ教えてくれるとありがたいです。
いや、頼む!教えてくれ!
-
例えば私が移行したパッケージを例にあげると、expand-region → expreg、undotree → vundo、ivy/counsel/swiper → vertico/consult、yasnippet → tempel、all-the-icons → nerd-icons、smartparens → electric-pair-mode、auto-highlight-mode → idle-highlight-mode、volatile-highlights → goggles、git-gutter → diff-hl、centaur-tab → mode-line-tab、persp -> activities、などがあります ↩
-
昔は英語に苦しんでいましたが、いまは
ellama-translate
を使って一発で翻訳・要約できていい時代になったなと思います ↩