Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cursorless-dev/vscode-parse-tree
Syntax trees for VSCode using tree-sitter
https://github.com/cursorless-dev/vscode-parse-tree
parser vscode-extension
Last synced: 1 day ago
JSON representation
Syntax trees for VSCode using tree-sitter
- Host: GitHub
- URL: https://github.com/cursorless-dev/vscode-parse-tree
- Owner: cursorless-dev
- License: mit
- Created: 2021-04-20T09:06:42.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-07-22T14:15:51.000Z (6 months ago)
- Last Synced: 2024-07-22T17:09:07.337Z (6 months ago)
- Topics: parser, vscode-extension
- Language: TypeScript
- Homepage:
- Size: 6.86 MB
- Stars: 41
- Watchers: 4
- Forks: 35
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# Parse tree
Exposes an api function that can be used to get a parse tree node for a given file location.
## Usage
Can be used as follows:
```ts
const parseTreeExtension = vscode.extensions.getExtension("pokey.parse-tree");if (parseTreeExtension == null) {
throw new Error("Depends on pokey.parse-tree extension");
}const { getNodeAtLocation } = await parseTreeExtension.activate();
```Don't forget to add an `extensionDependencies`-entry to `package.json` as
described in
https://code.visualstudio.com/api/references/vscode-api#extensions.### Parsing a custom language
If you'd like to add support for a new language, see the [Adding a new language](#adding-a-new-language) section below. Alternatively, your extension can register a custom language with this extension. Although this is not the preferred way to add a new language, it can be convenient when you have a parser that you don't believe belongs in the main extension.
Parsing your own language is as simple as registering your `languageId` with an absolute path to your `.wasm` file:
```ts
const { registerLanguage } = await parseTreeExtension.activate();registerLanguage(languageId, wasmPath);
```## Contributing
### Setup
1. `yarn`
2. Install [emscripten](https://emscripten.org/docs/getting_started/downloads.html) for generating parser wasm files### Adding a new language
It's straightforward to add any [language with a tree-sitter grammar](https://tree-sitter.github.io/tree-sitter/).
1. Add a dependency on the npm package for that language: `yarn add -D tree-sitter-yourlang`.
2. Add a language to the dictionary at the top of `./src/extension.ts`
3. Add a reference to `onLanguage:yourlang` to the [activationEvents section of package.json](package.json). `yourlang` must be a [VSCode language identifier](https://code.visualstudio.com/docs/languages/identifiers).
4. Add your language to the top of the [Makefile](Makefile)
5. Run `yarn compile`, then hit `F5` in VSCode, with this project open, to test your changes.
6. Submit a PR!### Developing on WSL2
When working with WSL, the host vscode instance connects to a vscode server on the WSL vm. This happens automatically when you run "code" in WSL, as long as you have the "Remote - WSL" extension installed on the host. From there you need to:
- Install the `pokey.command-server` extension on the host vscode
- Clone the extension in the WSL side.
- If you're adding language support to `vscode-parse-tree`, you need to clone that as well, build it, and link it into the `vscode-server` extension folder: `ln -s ~/your/code/vscode-parse-tree ~/.vscode-server/extensions/parse-tree` for instance.
- If you get errors about needing to install the `Remote-WSL` extension, you might need to manually delete the extension from the host side and try again.### Updating `web-tree-sitter`
We build a custom version of `web-tree-sitter` to ensure that we can always use the latest version and fix any problems as they come up.
To update `web-tree-sitter` update the contents of [./tree-sitter-version](./tree-sitter-version) to the latest commit sha of [tree-sitter](https://github.com/tree-sitter/tree-sitter/commits/master).The script which builds our custom version is at the end of our [`Makefile`](./Makefile).
## Change Log
See [CHANGELOG.md](CHANGELOG.md).
# Credits
Forked from https://github.com/georgewfraser/vscode-tree-sitter.