Emacs 31.1、Tree-sitter文法の自動導入とunexecの廃止
4 分で読めます

GNU Emacs 31.1が2026年8月24日に公開された。日々の作業をもっとも変えそうな変更は
小さなものだ。Tree-sitterの文法が自分でインストールできるようになった。Sean
Whitton氏がinfo-gnu-emacsメーリングリストに投稿したリリース告知は、詳細を列挙する
のではなくetc/NEWSを参照するよう促している。したがってこのリリースの姿は、同時に
公開された解説から見えてくる。書き直された補完システム、ウィンドウレイアウト用の
一連のコマンド、そしてEmacs 27以降非推奨だったunexecダンパーの削除である。
Tree-sitterの文法が手作業ではなくなる
Emacs 31.1では、Tree-sitterの文法を自動でインストールする
treesit-auto-install-grammarオプションが追加された。リリースを解説した
Mastering Emacsによる。これまでTree-sitterのメジャーモードを使うには、文法を自分で
用意し、そのバージョンをモードが期待するものと合わせておく必要があった。食い違えば、
依存関係の問題ではなくエディタの不具合のように見えるエラーが出た。Mastering Emacsは
新しいオプションが、その手作業のバージョン管理をなくすものだと説明している。
Tree-sitterでの移動もより充実した。同じ解説は、構造的なノードをまたいで移動する
treesit-forward-sexp-listとtreesit-forward-list、そして構文木を調べる
treesit-exploreコマンドを挙げている。あるモードがなぜ予期しないハイライトや
インデントをするのかを突き止める、実用的な手段だ。
補完システムは書き直された
Completionsバッファは要求を待たずに即座に表示できるようになり、flexマッチングの
アルゴリズムは書き直された。Mastering Emacsと、リリース候補を報じたLinux
Compatibleの双方が伝えている。補完のカテゴリは互いに継承でき、RETはM-UPまたは
M-DOWNで選んだ候補を選択するようになった。
Linux Compatibleはさらに、minibuffer-visible-completionsにup-downという値が
加わったことを記録している。「minibuffer-visible-completionsに新しい'up-down'値を
使えば、ミニバッファとは独立に補完を移動できます」。この挙動をこれまでサードパーティ
製パッケージで組み上げてきた人は、アップグレード後にどのパッケージが不要になったかを
問うとよい。
ウィンドウレイアウトに専用コマンド
ウィンドウレイアウトの組み替えは、これまで手作業でウィンドウを削除し分割し直すこと だった。Emacs 31.1は、レイアウト全体に作用するコマンドを追加した。Mastering Emacsが 挙げているものは次のとおり。
| コマンド | 動作 |
|---|---|
window-layout-rotate-clockwise | レイアウトを時計回りに回転 |
window-layout-counterclockwise | 逆方向に回転 |
window-layout-flip-topdown | レイアウトを上下反転 |
window-layout-flip-leftright | 左右反転 |
window-layout-transpose | 行と列を入れ替え |
other-window-backward(C-x O) | 直前のウィンドウへ移動 |
同じ情報源によれば、split-windowは削除したウィンドウを復活させることもできる。
端末寄りの変更も二つある。対応する端末ではxterm-mouse-modeが既定で有効になり、
子フレームがTTYフレームでも動作するようになった。
削除されたもの、そして間に合わなかった修正
unexecダンパーは削除された。Emacs 27以降非推奨であり、Mastering Emacsはその削除を
「一つの時代の終わり」と記している。主に自分でEmacsをビルドする人、あるいはその
パッケージングを保守する人に関係する。組み込みのctagsプログラムも削除され、
置き換えとして想定されているのはUniversal Ctagsだ。
二つの項目はこのリリースに入らなかった。ガベージコレクタの作業は、Mastering Emacsに よればEmacs 32へ延期された。またLinux Compatibleは、Emacs Lispのシンボル短縮形に 関する脆弱性について、このリリース系列では緩和策が入るが、完全な解決はバージョン32に 先送りされたと報じている。自分で管理していない出所のElispファイルを開くなら、 知っておく価値がある。
Unicodeのサポートはバージョン17.0に上がり、多アクセントギリシャ語、ティフィナグ文字、 モホーク語やオナイダ語を含む北部イロコイ諸語、ビルマ語の各変種、シリア語の新しい 入力メソッドが加わった。
これが開発者にとって意味すること
まず動くべきはTree-sitterの変更だ。設定に手書きの文法インストール処理や、固定した
文法のコミットが含まれているなら、何かを削除する前にscratch設定で
treesit-auto-install-grammarを試し、そのうえで不要になったものを外す。補完にも
同じことが言える。即座に表示されるCompletionsバッファと書き直されたflexマッチャは、
いくつもの人気パッケージが提供している機能と重なる。あえて最小構成の設定で31.1を
半日動かしてみるのが、もう抱えなくてよいものを見つけるいちばん早い方法だ。
Emacsをソースからビルドする人、ディストリビューション向けにパッケージを保守する人は、
unexecの削除をビルドシステムの変更として読み、利用者がアップグレードする前に自分の
レシピを確認したい。ctagsの削除も同様だ。同梱バイナリを呼び出しているものには、
代わりにUniversal Ctagsのインストールが必要になる。
急がず構えるべき理由が二つある。告知そのものが詳細をetc/NEWSに委ねているので、
新しくビルドした31.1でC-h nを叩いた結果が正式な一覧であり、要約は--本稿を含めて
--そうではない。そしてシンボル短縮形の修正がEmacs 32でしか入らないということは、
ここでのセキュリティの話が未完だという意味だ。信頼できないElispを日常的に開くなら、
決着したと考えるより、注視を続ける理由になる。
Sources
- Emacs 31.1 released - GNU info-gnu-emacs mailing list
- What's New in Emacs 31.1? - Mastering Emacs
- GNU Emacs 31.1 RC1: Completion Overhaul, Window Commands and Unicode 17.0 - Linux Compatible