Files
carbon-lang/utils/tree_sitter
Chandler Carruth 8fd4156616 Update tree_sitter for the new self syntax and static var (#7025)
This implements p7016 for tree_sitter. It also updates the build and
source file to allow this to build successfully and documents how to
successfully run these tests with Bazel given that it is fundamentally
not hermetic.

Assisted-by: Antigravity with Gemini
2026-04-06 19:31:54 +00:00
..
2025-04-11 19:58:54 +00:00

Tree-sitter grammar for Carbon

Tree-sitter is currently used for syntax highlighting in supported editors.

Development

We use a non-hermetic tree-sitter invocation, so it must be installed locally. To install tree-sitter, run:

npm install -g tree-sitter-cli

Building and Testing

To build and test changes to the grammar using Bazel, provide specific flags to allow the build to access the system tree-sitter binary and environment.

bazel test //utils/tree_sitter:string_tests \
  --strategy=Genrule=local \
  --action_env=PATH \
  --action_env=HOME
  • --strategy=Genrule=local: Disables sandboxing for the genrule that runs tree-sitter generate, allowing it to find the system-installed binary.
  • --action_env=PATH: Passes your current PATH to the build actions, ensuring tree-sitter can be found. If tree-sitter is not in your default PATH, you can specify it explicitly, for example: --action_env=PATH=/path/to/tree-sitter/bin:$PATH.
  • --action_env=HOME: Passes your HOME environment variable, which tree-sitter may need to locate its configuration or cache.

Editor Installation

Helix

  1. Install tree-sitter and Nodejs.
  2. Install Helix.
  3. Run ./helix.sh

Emacs

TODO