Chandler Carruth 8fd4156616 Update tree_sitter for the new `self` syntax and `static var` (#7025) 3 недель назад
..
queries e257051612 No predeclared identifiers, `Core` is a keyword (#4864) 1 год назад
src 6f6e46ef57 Migrate tree-sitter support to MODULE.bazel (#4783) 1 год назад
testdata 8fd4156616 Update tree_sitter for the new `self` syntax and `static var` (#7025) 3 недель назад
.gitignore 6f6e46ef57 Migrate tree-sitter support to MODULE.bazel (#4783) 1 год назад
BUILD 8c3fa80691 Add cc rule wrappers for cc_env (#5277) 1 год назад
README.md 8fd4156616 Update tree_sitter for the new `self` syntax and `static var` (#7025) 3 недель назад
grammar.js 8fd4156616 Update tree_sitter for the new `self` syntax and `static var` (#7025) 3 недель назад
helix.sh 6f6e46ef57 Migrate tree-sitter support to MODULE.bazel (#4783) 1 год назад
test_runner.cpp 38d25cf622 Share ReadFile in tests (#4967) 1 год назад

README.md

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