Skip to content
Tech AI Wire
Dev Stack

Emacs 31.1、Tree-sitter文法の自動導入とunexecの廃止

4 分で読めます

著者 Tech AI Wire Team

The GNU gnu-head logo drawn in ink outline with a red arrow curving down into it

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-listtreesit-forward-list、そして構文木を調べる treesit-exploreコマンドを挙げている。あるモードがなぜ予期しないハイライトや インデントをするのかを突き止める、実用的な手段だ。

補完システムは書き直された

Completionsバッファは要求を待たずに即座に表示できるようになり、flexマッチングの アルゴリズムは書き直された。Mastering Emacsと、リリース候補を報じたLinux Compatibleの双方が伝えている。補完のカテゴリは互いに継承でき、RETM-UPまたは M-DOWNで選んだ候補を選択するようになった。

Linux Compatibleはさらに、minibuffer-visible-completionsup-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-backwardC-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

  1. Emacs 31.1 released - GNU info-gnu-emacs mailing list
  2. What's New in Emacs 31.1? - Mastering Emacs
  3. GNU Emacs 31.1 RC1: Completion Overhaul, Window Commands and Unicode 17.0 - Linux Compatible