自由のなる木

RSS
公開日
2022-10-23

Eglot が Emacs のメインブランチに入った

先週のことになるが、Eglot が Emacs のメインブランチ (master) にマージされた。

これで晴れて、Emacs 29.1 以降の Emacs ではビルトインで LSP (Language Server Protocol) をサポートすることになる。1

私は LSP のプラグインとしては lsp-mode を使っていたのだが、9 月頃に emacs-devel で Emacs に Eglot が入るようなやり取りを見かけて、Eglot の作者自身が Emacs のリポジトリにその作業をするためのブランチを作成していたので、少し先行して Eglot に移行した。

よく言われていることではあるが、Eglot は Emacs の標準機能をそのまま活かした形で LSP の機能を統合していて、lsp-mode よりも、Emacs way なパッケージのため、既存の知識を上手く活用できる点がとても良い。また、利用するパッケージ間の相性で何かの機能が壊れるリスクも少ない。

今、Emacs のブランチには tree-sitter に対応するためのブランチがあり、各プログラミング言語のメジャーモードで tree-sitter をサポートするためのボランティアを募集しているなど、意欲的に活動しているようだ。順調に行けばこれも次のリリースに含まれる可能性が高い。23

その他、Emacs のメインブランチには docker-tramp ならぬ、tramp-container4 が含まれていたり、別のブランチでは Common Lisp のパッケージ機能を Emacs に導入するための作業ブランチがあったりする。

最近の Emacs のリポジトリの動向はとても楽しいことになっており、目が離せない。

以上。


  1. 途中、Eglot をリネームする提案があり、議論が白熱していたため、リリースタイミングが遅れることも懸念される雰囲気があったが、無事にマージされて良かった。 

  2. これは既存の tree-sitter パッケージとは異なるもので、treeshit.el というパッケージが新規に開発されている。 

  3. tree-sitter 対応のブランチには、TypeScript の tree-sitter 対応のための ts-mode.el の存在もあり、機能が充実すれば TypeScript のコードを書く際に typescript-mode などの外部パッケージをインストールする必要がなくなるかもしれない。 

  4. 元々は tramp-docker という名前だったが、Podman や Kubernetes にも対応するために tramp-container というパッケージ名に変更された。