Package Control

The official Sublime Text package manager.

TreeSitter

Sublime Text Tree-sitter configuration and abstraction layer

By kylebebak
Created September 18, 2023, last updated August 26, 2026.

JulJunMayAprMarFebJan Dec2025 NovOctSepAug 2026-W35 | installs: 3 | removals: 0 | upgrades: 0 2026-W35 | installs: 3 | removals: 0 | upgrades: 0 2026-W35 | installs: 3 | removals: 0 | upgrades: 0 2026-W34 | installs: 7 | removals: 3 | upgrades: 0 2026-W34 | installs: 7 | removals: 3 | upgrades: 0 2026-W34 | installs: 7 | removals: 3 | upgrades: 0 2026-W33 | installs: 9 | removals: 4 | upgrades: 0 2026-W33 | installs: 9 | removals: 4 | upgrades: 0 2026-W33 | installs: 9 | removals: 4 | upgrades: 0 2026-W32 | installs: 8 | removals: 3 | upgrades: 0 2026-W32 | installs: 8 | removals: 3 | upgrades: 0 2026-W32 | installs: 8 | removals: 3 | upgrades: 0 2026-W31 | installs: 13 | removals: 2 | upgrades: 0 2026-W31 | installs: 13 | removals: 2 | upgrades: 0 2026-W31 | installs: 13 | removals: 2 | upgrades: 0 2026-W30 | installs: 6 | removals: 2 | upgrades: 0 2026-W30 | installs: 6 | removals: 2 | upgrades: 0 2026-W30 | installs: 6 | removals: 2 | upgrades: 0 2026-W29 | installs: 8 | removals: 3 | upgrades: 0 2026-W29 | installs: 8 | removals: 3 | upgrades: 0 2026-W29 | installs: 8 | removals: 3 | upgrades: 0 2026-W28 | installs: 5 | removals: 2 | upgrades: 0 2026-W28 | installs: 5 | removals: 2 | upgrades: 0 2026-W28 | installs: 5 | removals: 2 | upgrades: 0 2026-W27 | installs: 7 | removals: 3 | upgrades: 0 2026-W27 | installs: 7 | removals: 3 | upgrades: 0 2026-W27 | installs: 7 | removals: 3 | upgrades: 0 2026-W26 | installs: 8 | removals: 4 | upgrades: 0 2026-W26 | installs: 8 | removals: 4 | upgrades: 0 2026-W26 | installs: 8 | removals: 4 | upgrades: 0 2026-W25 | installs: 8 | removals: 2 | upgrades: 0 2026-W25 | installs: 8 | removals: 2 | upgrades: 0 2026-W25 | installs: 8 | removals: 2 | upgrades: 0 2026-W24 | installs: 8 | removals: 2 | upgrades: 0 2026-W24 | installs: 8 | removals: 2 | upgrades: 0 2026-W24 | installs: 8 | removals: 2 | upgrades: 0 2026-W23 | installs: 6 | removals: 2 | upgrades: 0 2026-W23 | installs: 6 | removals: 2 | upgrades: 0 2026-W23 | installs: 6 | removals: 2 | upgrades: 0 2026-W22 | installs: 0 | removals: 0 | upgrades: 0 2026-W22 | installs: 0 | removals: 0 | upgrades: 0 2026-W22 | installs: 0 | removals: 0 | upgrades: 0 2026-W21 | installs: 8 | removals: 2 | upgrades: 0 2026-W21 | installs: 8 | removals: 2 | upgrades: 0 2026-W21 | installs: 8 | removals: 2 | upgrades: 0 2026-W20 | installs: 6 | removals: 3 | upgrades: 1 2026-W20 | installs: 6 | removals: 3 | upgrades: 1 2026-W20 | installs: 6 | removals: 3 | upgrades: 1 2026-W19 | installs: 5 | removals: 1 | upgrades: 0 2026-W19 | installs: 5 | removals: 1 | upgrades: 0 2026-W19 | installs: 5 | removals: 1 | upgrades: 0 2026-W18 | installs: 10 | removals: 3 | upgrades: 0 2026-W18 | installs: 10 | removals: 3 | upgrades: 0 2026-W18 | installs: 10 | removals: 3 | upgrades: 0 2026-W17 | installs: 14 | removals: 2 | upgrades: 0 2026-W17 | installs: 14 | removals: 2 | upgrades: 0 2026-W17 | installs: 14 | removals: 2 | upgrades: 0 2026-W16 | installs: 9 | removals: 2 | upgrades: 0 2026-W16 | installs: 9 | removals: 2 | upgrades: 0 2026-W16 | installs: 9 | removals: 2 | upgrades: 0 2026-W15 | installs: 10 | removals: 3 | upgrades: 1 2026-W15 | installs: 10 | removals: 3 | upgrades: 1 2026-W15 | installs: 10 | removals: 3 | upgrades: 1 2026-W14 | installs: 4 | removals: 2 | upgrades: 0 2026-W14 | installs: 4 | removals: 2 | upgrades: 0 2026-W14 | installs: 4 | removals: 2 | upgrades: 0 2026-W13 | installs: 5 | removals: 0 | upgrades: 0 2026-W13 | installs: 5 | removals: 0 | upgrades: 0 2026-W13 | installs: 5 | removals: 0 | upgrades: 0 2026-W12 | installs: 9 | removals: 3 | upgrades: 0 2026-W12 | installs: 9 | removals: 3 | upgrades: 0 2026-W12 | installs: 9 | removals: 3 | upgrades: 0 2026-W11 | installs: 5 | removals: 2 | upgrades: 0 2026-W11 | installs: 5 | removals: 2 | upgrades: 0 2026-W11 | installs: 5 | removals: 2 | upgrades: 0 2026-W10 | installs: 8 | removals: 6 | upgrades: 0 2026-W10 | installs: 8 | removals: 6 | upgrades: 0 2026-W10 | installs: 8 | removals: 6 | upgrades: 0 2026-W09 | installs: 7 | removals: 0 | upgrades: 0 2026-W09 | installs: 7 | removals: 0 | upgrades: 0 2026-W09 | installs: 7 | removals: 0 | upgrades: 0 2026-W08 | installs: 10 | removals: 3 | upgrades: 0 2026-W08 | installs: 10 | removals: 3 | upgrades: 0 2026-W08 | installs: 10 | removals: 3 | upgrades: 0 2026-W07 | installs: 8 | removals: 1 | upgrades: 0 2026-W07 | installs: 8 | removals: 1 | upgrades: 0 2026-W07 | installs: 8 | removals: 1 | upgrades: 0 2026-W06 | installs: 9 | removals: 3 | upgrades: 0 2026-W06 | installs: 9 | removals: 3 | upgrades: 0 2026-W06 | installs: 9 | removals: 3 | upgrades: 0 2026-W05 | installs: 5 | removals: 3 | upgrades: 0 2026-W05 | installs: 5 | removals: 3 | upgrades: 0 2026-W05 | installs: 5 | removals: 3 | upgrades: 0 2026-W04 | installs: 8 | removals: 1 | upgrades: 0 2026-W04 | installs: 8 | removals: 1 | upgrades: 0 2026-W04 | installs: 8 | removals: 1 | upgrades: 0 2026-W03 | installs: 13 | removals: 5 | upgrades: 0 2026-W03 | installs: 13 | removals: 5 | upgrades: 0 2026-W03 | installs: 13 | removals: 5 | upgrades: 0 2026-W02 | installs: 6 | removals: 1 | upgrades: 0 2026-W02 | installs: 6 | removals: 1 | upgrades: 0 2026-W02 | installs: 6 | removals: 1 | upgrades: 0 2026-W01 | installs: 9 | removals: 1 | upgrades: 0 2026-W01 | installs: 9 | removals: 1 | upgrades: 0 2026-W01 | installs: 9 | removals: 1 | upgrades: 0 2025-W52 | installs: 9 | removals: 4 | upgrades: 0 2025-W52 | installs: 9 | removals: 4 | upgrades: 0 2025-W52 | installs: 9 | removals: 4 | upgrades: 0 2025-W51 | installs: 7 | removals: 5 | upgrades: 1 2025-W51 | installs: 7 | removals: 5 | upgrades: 1 2025-W51 | installs: 7 | removals: 5 | upgrades: 1 2025-W50 | installs: 3 | removals: 2 | upgrades: 0 2025-W50 | installs: 3 | removals: 2 | upgrades: 0 2025-W50 | installs: 3 | removals: 2 | upgrades: 0 2025-W49 | installs: 8 | removals: 2 | upgrades: 0 2025-W49 | installs: 8 | removals: 2 | upgrades: 0 2025-W49 | installs: 8 | removals: 2 | upgrades: 0 2025-W48 | installs: 3 | removals: 0 | upgrades: 1 2025-W48 | installs: 3 | removals: 0 | upgrades: 1 2025-W48 | installs: 3 | removals: 0 | upgrades: 1 2025-W47 | installs: 3 | removals: 1 | upgrades: 0 2025-W47 | installs: 3 | removals: 1 | upgrades: 0 2025-W47 | installs: 3 | removals: 1 | upgrades: 0 2025-W46 | installs: 7 | removals: 2 | upgrades: 1 2025-W46 | installs: 7 | removals: 2 | upgrades: 1 2025-W46 | installs: 7 | removals: 2 | upgrades: 1 2025-W45 | installs: 9 | removals: 3 | upgrades: 0 2025-W45 | installs: 9 | removals: 3 | upgrades: 0 2025-W45 | installs: 9 | removals: 3 | upgrades: 0 2025-W44 | installs: 7 | removals: 3 | upgrades: 0 2025-W44 | installs: 7 | removals: 3 | upgrades: 0 2025-W44 | installs: 7 | removals: 3 | upgrades: 0 2025-W43 | installs: 11 | removals: 3 | upgrades: 0 2025-W43 | installs: 11 | removals: 3 | upgrades: 0 2025-W43 | installs: 11 | removals: 3 | upgrades: 0 2025-W42 | installs: 9 | removals: 4 | upgrades: 2 2025-W42 | installs: 9 | removals: 4 | upgrades: 2 2025-W42 | installs: 9 | removals: 4 | upgrades: 2 2025-W41 | installs: 1 | removals: 0 | upgrades: 0 2025-W41 | installs: 1 | removals: 0 | upgrades: 0 2025-W41 | installs: 1 | removals: 0 | upgrades: 0 2025-W40 | installs: 11 | removals: 1 | upgrades: 0 2025-W40 | installs: 11 | removals: 1 | upgrades: 0 2025-W40 | installs: 11 | removals: 1 | upgrades: 0 2025-W39 | installs: 10 | removals: 2 | upgrades: 1 2025-W39 | installs: 10 | removals: 2 | upgrades: 1 2025-W39 | installs: 10 | removals: 2 | upgrades: 1 2025-W38 | installs: 2 | removals: 1 | upgrades: 1 2025-W38 | installs: 2 | removals: 1 | upgrades: 1 2025-W38 | installs: 2 | removals: 1 | upgrades: 1 2025-W37 | installs: 6 | removals: 1 | upgrades: 0 2025-W37 | installs: 6 | removals: 1 | upgrades: 0 2025-W37 | installs: 6 | removals: 1 | upgrades: 0 2025-W36 | installs: 9 | removals: 3 | upgrades: 1 2025-W36 | installs: 9 | removals: 3 | upgrades: 1 2025-W36 | installs: 9 | removals: 3 | upgrades: 1 2025-W35 | installs: 11 | removals: 3 | upgrades: 0 2025-W35 | installs: 11 | removals: 3 | upgrades: 0 2025-W35 | installs: 11 | removals: 3 | upgrades: 0 01020 WeeklyInstalls 024 WeeklyUpgrades 2026-W35 | upgrades: 0 2.0.0 2026-W31 | upgrades: 0 1.9.0
Installations: recent average 7 per week, 1,282 in total
Installations minus removals
Upgrades

Links

Versions

2.0.0 (>ST4204) ·
2026-08-26 00:03

1.9.0 (ST4107 - 4200) ·
2026-07-28 23:26

Sublime TreeSitter

The TreeSitter plugin provides Sublime Text with a performant and flexible interface to Tree-sitter.

Why Tree-sitter

Tree-sitter builds a parse tree for text in any buffer, fast enough to update the tree after every keystroke. The TreeSitter plugin has built-in commands for syntax-based selection and navigation, and for managing and debugging Tree-sitter languages and parse trees.

It also has APIs with everything you need to build Sublime Text plugins for "structural" editing, selection, navigation, code folding, symbol maps… See e.g. https://zed.dev/blog/syntax-aware-editing for ideas.

Installation

Installed languages

The installed_languages setting controls which Sublime scopes TreeSitter actively parses and tracks. This doesn't control which languages are available; tree_sitter_language_pack can fetch and cache the parser for any of its languages on demand, whether or not it's in this list. Languages injected into another language's syntax tree are always resolved on demand regardless of this setting.

Run TreeSitter: Install Language / TreeSitter: Remove Language to manage this list, and see more in Languages below.

Overview

Sublime TreeSitter provides commands to:

And APIs to:

Usage

Here's a partial list of commands that ship with TreeSitter. To see them all, search for TreeSitter in the command palette.

Key bindings

Here are some example key bindings for selection and navigation commands.

Public APIs

TreeSitter exports low-level APIs for building Sublime Text plugins. These APIs are importable by other plugins under the sublime_tree_sitter package.

API source code is mostly in src/api.py.

Plugin load order

To import sublime_tree_sitter in your plugin, you have 2 options:

import sublime_plugin


class MyTreeSitterCommand(sublime_plugin.WindowCommand):
    def run(self, **kwargs):
        from sublime_tree_sitter import get_tree_dict
        # ...

Event listener

Plugins can subscribe to "tree_sitter_update_tree" events:

import sublime_plugin
from sublime_tree_sitter import get_tree_dict


class MyTreeSitterListener(sublime_plugin.EventListener):
    def on_window_command(self, window, command, args):
        if command == "tree_sitter_update_tree":
            print(get_tree_dict(args["buffer_id"]))

Scopes, languages, and queries files

Languages

TreeSitter gets language parsers from tree_sitter_language_pack, which bundles ~370 languages. It downloads and caches the precompiled parser for a language the first time it's used (this can take a moment and needs network access), then reuses the cached copy from then on.

SCOPE_TO_LANGUAGE_NAME in src/utils.py only maps a curated subset of these languages to Sublime scopes out of the box. To add a scope for a language tree_sitter_language_pack supports but this plugin doesn't map yet, add it to scope_to_language_name in TreeSitter: Settings. Your mapping is merged with the default mapping.

Nested languages (injections)

Some languages embed others, e.g. Python in a Markdown fenced code block, JS/CSS in an HTML <script>/<style> tag, or Markdown's own inline content (implemented as two languages, markdown and markdown_inline, joined by an injection). TreeSitter discovers and parses these using each grammar's own bundled injections.scm via tree_sitter_language_pack.get_injections_query. This is the same mechanism editors like Neovim and Helix use. See core.compute_injections.

get_node_spanning_region and everything built on it (select ancestor/sibling/descendant, show node under selection) descends into injected trees. get_cousins doesn't, because "same depth, same type" only means something within one grammar. Goto/select symbol also search every injected tree (see get_captures_from_nodes), resolving a query per injected language the same way as the buffer's own top-level language. A symbol found inside an injected tree only gets breadcrumbs from within that tree, never stitched to the outer document's structure.

Limitations

Development

License

MIT.

Results

Packages