概要
- Emacs Solo は、外部パッケージに依存しないEmacs設定の2周年を迎えた
- 最新のリファクタで「コア」と「自作モジュール」を明確に分離
- init.elはEmacs組み込み機能のみを設定し、lisp/は自作の追加機能を格納
- 35個の独立した自作Elispモジュールを紹介
- 維持の理由・学び・今後の展望についても言及
Emacs Solo 2周年:リファクタと設計思想
- Emacs Solo は、外部パッケージを一切使用しないEmacs設定
- init.el はEmacs本体の機能だけを設定、 lisp/ 以下に自作モジュールを配置
- package-install や straight.el、 use-package :ensure t は一切不使用
- Emacs本体と自作コードのみで完結する設定環境
- スクリーンショットや詳細はリポジトリ参照
Emacs Soloを維持する理由
- Emacsの素の機能 を徹底的に理解するため
- Emacsリリース間の互換性 や壊れにくさの追求
- パッケージリポジトリ依存 によるトラブル回避
- 外部要因によるビルド失敗やデバッグ地獄 からの解放
- 自作・自己管理の楽しさ
リファクタの概要:コアとエクストラの分離
- 以前は 巨大なinit.el 一つに全て詰め込んでいた
- 分離前の問題点
- 構成が見通しにくい
- 一部機能だけ使いたい人に不親切
- Emacs本体の設定と自作コードの境界が不明瞭
- 解決策: 2層構造 へ
- Layer 1: init.el(Emacsコア設定のみ。依存なし)
- Layer 2: lisp/(自作Elispモジュール群。必要なものだけrequire)
init.elの構成と主な設定
- 見出し付きセクション で整理(outline-mode対応)
- 各セクションごとに Emacs組み込み機能 をカスタマイズ
- 主な内容
- キーバインド再定義(例:M-oでother-window等)
- window-layout 系コマンド(Emacs 31新機能)
- フレーム名の管理、C-z無効化
- バックアップ/オートセーブ先をcache/に統一
- treesit(tree-sitter) 自動インストールと有効化
- abbrev-mode の独自プレースホルダーシステム
- auth-source 設定(~/.authinfo.gpg利用)
- auto-revert によるファイル自動リロード
- compilation-mode でANSIカラー対応
- window管理 の強化
- tab-bar によるワークスペース管理
- RCIRC/ ERC 両IRCクライアントの設定
- icomplete-vertical-mode での補完強化
- dired/wdired のカスタマイズ(システム連携、詳細非表示等)
- eshell の高度な設定(履歴共有、プロンプト切替等)
- isearch の拡張
- vc (バージョン管理)の徹底活用と独自拡張
- smerge/diff/ediff の見やすいウィンドウ分割
- eldoc/eglot によるLSP・ドキュメント表示
- flymake/flyspell/whitespace 等の診断・可視化
- gnus (メール/ニュース)
- man/minibuffer/newsticker (RSS/ATOM)等
- electric-pair/proced/org/speedbar/time/uniquify/which-key/webjump 等
- 各言語モード のtree-sitter/非tree-sitter両対応
lisp/ディレクトリ:35個の自作Elispモジュール
- 各モジュールは 独立したElispファイル
- MELPA等の外部パッケージの代替を 小型・自作 で実装
- provide/require で簡単に使い回し可能
- 「 hacky reimplementation」の精神:シンプル・理解しやすい・日常利用に十分
- 例:emacs-solo-themes(独自カラーテーマ)など
Emacs Soloを通じて得た知見
- Emacs本体の進化 (Emacs 31等)で自作polyfillが不要になる場面が増加
- 自作コードの可搬性・保守性 が大幅向上
- 壊れにくい・再現性の高い 開発環境の実現
- 自分で実装することでEmacsの深い理解 を獲得
- 外部依存ゼロ の快適さと安心感
今後も Emacs Solo は「最小限の依存・最大の理解・日常利用に最適化」を目指して進化予定。興味があれば リポジトリ をぜひ参照。