概要
- Helix 25.07 の主な新機能と改善点の紹介
- Tree-house によるTree-sitter連携の刷新
- ファイルエクスプローラー やLSPドキュメントカラーなどの新機能
- コマンドモード の大幅な強化と柔軟なパース機能
- インジェクション 等のシンタックスハイライトの進化
Helix 25.07リリースハイライト
- Helix 25.07 がついにリリース、195名のコントリビューターによる貢献
- Helix はモーダルテキストエディタ、複数選択、LSP、tree-sitter、DAP実験サポート搭載
- 本リリースでは Tree-sitter連携のコア部分を完全刷新、新機能多数追加
新ファイルエクスプローラー
- <space>e で新しいファイルエクスプローラー起動
- TelescopeライクなピッカーUI、ディレクトリ階層を直感的に閲覧
- ディレクトリ選択でその下層のエクスプローラーを新たに開く仕様
- <space>f は従来通りディレクトリ全体を再帰的に表示
- 大規模プロジェクトの精密なファイル操作に最適
LSP Document Colors
- LSPのDocument Color Request に対応
- tailwindcss-language-serverやvscode-css-language-server等から RGBカラー範囲情報 を取得
- カラーのスウォッチを インラインで表示、型ヒントのような体験
コマンドモードの強化
- コマンド(:)実行のパーサ・補完機能を全面刷新
- ファイル名のスペース補完やバグ修正、 フラグ・展開 の新機能追加
- :sort --reverse や :write --no-format など、シェルライクなフラグ対応
- 展開機能 で%{variable_name}や%sh{...}構文による値の挿入が可能
- 例:
:echo %sh{git blame -L %{cursor_line},+1 %{buffer_name}}で現在行のgit blameをステータスラインに表示
- 例:
- コマンドごとの複雑な構文や補完も柔軟に対応
柔軟なパース・拡張性
- コマンドラインのパース手法を動的に切り替え可能
- :set-optionや:toggle-optionは serde_jsonのストリーミングデシリアライザ で複雑な設定値も扱える
- :run-shell-commandや:pipeはコマンド名以降のパースを行わず、シェルの規則に素直に従う設計
Tree-houseとTree-sitter刷新
Tree-sitterとは
- Tree-sitter は高速・エラー耐性の高いパーサ生成フレームワーク
- grammar.jsで文法定義、CLIでパーサ生成・テスト
- エディタやLSP、Difftastic等のツールが 構文木 を活用
- Query 機能で部分木のパターンマッチ・ノードキャプチャが可能
- Helixでは ハイライト・インデント・テキストオブジェクト 等に活用
HelixのTree-sitter利用歴史
- 初期から tree-sitter公式Rustバインディング を利用
- tree-sitter-highlight でハイライト処理、だが 非インクリメンタル で非効率
- Helix独自のハイライター(tree-sitter-highlightのフォーク)を育成したが、保守困難に
Tree-houseの登場
- 新ハイライトクレートTree-house をゼロから実装
- パースとクエリ処理の分離、インジェクション判定の最適化
- IteratorベースのAPIを廃止、小さな構成要素で保守性向上
- 長年のバグ修正、将来の並列パース等の拡張性確保
インジェクション(Injection)機能の進化
- injections.scm による多重言語埋め込み(例: Markdown内のRustコード)
- docコメント内Markdown→コードフェンス内Rust 等、複雑な多層インジェクション対応
- Tree-house内部で階層をツリー構造で管理、各層ごとに構文木をパース
- インクリメンタルインジェクション で変更箇所のみ再パース・再クエリ実行
- 大規模Markdownリスト等でのパフォーマンス向上
まとめ
- Helix 25.07 はエディタ基盤の刷新と多彩な新機能で大幅進化
- Tree-house によるシンタックス処理の抜本的強化
- コマンドモードの柔軟性・拡張性、LSP連携の表現力向上
- 今後の開発・拡張にも大きな布石