概要
- Emacs 31 で追加予定の注目機能を詳細に解説
- tree-sitter の大幅な利便性向上と新しいmarkdown-ts-modeの紹介
- Eglot や completion、 window管理 など多岐にわたる改善点を列挙
- すべて 標準機能 で追加パッケージ不要、現時点(2026年中頃)での利用体験をベースに解説
- 開発中のため正式リリース時に仕様変更の可能性あり
Emacs 31で追加される「新しいバッテリー」たち
- Emacs 31 は現在プレリリース段階、主にemacs-31ブランチやmasterからビルドして日常利用中の体験を共有
- 外部パッケージ不要、すべてコア機能として追加予定
- 設定ファイルには ; EMACS-31 コメントで新機能を区別、リリース時に再確認予定
- 本記事は主に「まだリリース前の新機能」を先取りプレビューとして紹介
tree-sitterの劇的な進化
- tree-sitter 対応メジャーモードの切り替えが簡単化
treesit-enabled-modesをtに設定するだけでtree-sitterバリアントへ自動切替treesit-auto-install-grammarにより必要な文法ファイルのダウンロードとビルドを自動化
- 主要言語(TypeScript, TSX, Rust, TOML, YAML, Dockerfileなど)の文法情報は各モード内蔵
- 設定ファイルから文法指定の冗長な記述を削除可能、保守性向上
- アーキテクチャ間でEmacsディレクトリを共有する場合は注意
- 自動インストールされたgrammarはアーキテクチャごとに分離されないため、x86_64とarm64でバイナリ競合の可能性
- tree-sitter関連の改善は今後も進行中
- Yuan Fu氏らによる多言語対応・使い勝手・パフォーマンス向上の継続的な開発
markdown-ts-mode(実験的機能)
- Emacs 31標準搭載のMarkdownモード (markdown-ts-mode)は筆者が原案を提案、Stéphane Marks氏と共同開発
- Orgモードに近い操作感
- 見出し移動・折りたたみ・構造間移動など、Orgユーザーが違和感なく利用可能
- フェンスドコードブロックのライブ着色
- コードブロック内は各言語の本物のメジャーモードで構文ハイライト
- 例: ```elisp ブロックはEmacs Lispモードのハイライト、編集コマンドも有効
- ただし補完機能は未完成部分あり
- インライン画像表示
- Markdown内の画像リンクがバッファ内で即座に表示、ドキュメント性向上
- 現状は実験的
auto-mode-alist未登録、M-x load-library RET markdown-ts-modeで手動ロード- フィードバック歓迎、安定化に向けて開発中
EglotのMarkdownドキュメント表示(実験的)
- EglotがLSPドキュメントをmarkdown-ts-modeでレンダリング可能に
markdown-ts-view-modeで整形表示、追加パッケージ不要- こちらも現状はopt-inの実験的機能
- eglot-code-action-indicationsはノイズが多いため無効化推奨
eglot-events-buffer-size関連は今後整理予定
eldoc at point
- eldocがポイント下のシンボルのヘルプを自動表示
eldoc-echo-area-prefer-doc-bufferと組み合わせて未知のコード探索が容易
スマートな補完体験
- completion-eager-update と completion-eager-display で入力と同時に補完候補をリアルタイム表示
- minibuffer-visible-completions を'up-downに設定で矢印キーで候補移動が直感的に
- icomplete も改良(bug#75784由来)
- 縦型表示やプレフィックスインジケータ対応、設定の互換性ブロック削除が可能に
ウィンドウレイアウト操作の新コマンド
- ウィンドウ配置の入れ替え・回転・反転 コマンド追加
- 横縦の入れ替え、全体回転、左右上下のミラーなど柔軟なレイアウト変更
サイドウィンドウ対応Speedbar
- Speedbar がサイドウィンドウに常駐可能に(speedbar-window)
- 従来のフローティングフレームから進化、幅上限で他ウィンドウとの競合も低減
VC(バージョン管理)関連の改善
- vc-dir-auto-hide-up-to-date で最新状態のファイルを自動非表示
- 手動リフレッシュ&非表示コマンドが不要に
- vc-allow-rewriting-published-history で公開済み履歴の書き換えを明示的に許可
- Jujutsuやforce-pushワークフロー対応
xrefバッファのインライン編集
- xrefバッファでの直接編集モード(xref-edit-mode) が新登場
- Diredやgrepの編集ワークフローをxrefにも導入
- 従来はgrepバッファへのエクスポート&編集が必要だったが、今後はxref上で直接編集可能
- バッファ間の移動や余計なコマンドが不要に
- Dmitry Gutov氏とのやり取りでUIが洗練、inline編集がデフォルトへ
- 今後の検索UIの設計議論にも発展
- *-edit-modeファミリーとwdiredの比較、将来的なライブ検索UIの可能性
Emacs 31 は「追加パッケージ不要でここまでできる」を大きく前進させるバージョン。 日々進化する開発版の体験をもとに、正式リリース時の新機能を先取りで紹介。 既存の設定やワークフローの大幅な簡素化・高機能化が期待できる。 どの機能も「標準でここまでできる」ことを実感できる内容。 正式リリース後は更なる安定化・機能追加にも期待。