View treesitter information directly in Neovim!
- Neovim nightly
- nvim-treesitter plugin
Install the plugin (vim-plug shown):
Plug 'nvim-treesitter/nvim-treesitter'
Plug 'nvim-treesitter/playground'
It's also recommended that you install the query
parser for query editor highlighting. Run this after installing the above plugins.
:TSInstall query
The configuration is like any other nvim-treesitter module.
require "nvim-treesitter.configs".setup {
playground = {
enable = true,
disable = {},
updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
persist_queries = false, -- Whether the query persists across vim sessions
keybindings = {
toggle_query_editor = 'o',
toggle_hl_groups = 'i',
toggle_injected_languages = 't',
toggle_anonymous_nodes = 'a',
toggle_language_display = 'I',
focus_language = 'f',
unfocus_language = 'F',
update = 'R',
goto_node = '<cr>',
show_help = '?',
},
}
}
The tree can be toggled using the command :TSPlaygroundToggle
.
R
: Refreshes the playground view when focused or reloads the query when the query editor is focused.o
: Toggles the query editor when the playground is focused.a
: Toggles visibility of anonymous nodes.i
: Toggles visibility of highlight groups.I
: Toggles visibility of the language the node belongs to.t
: Toggles visibility of injected languages.f
: Focuses the language tree under the cursor in the playground. The query editor will now be using the focused language.F
: Unfocuses the currently focused language.<cr>
: Go to current node in code buffer
Press o
to show the query editor.
Write your query like (node) @capture
,
put the cursor under the capture to highlight the matches.
When you are on a query
buffer, you can get a list of suggestions with
Ctrl-X Ctrl-O. See :h 'omnifunc'
.
The playground can lint query files for you. For that, you need to activate the query_linter
module:
require "nvim-treesitter.configs".setup {
query_linter = {
enable = true,
use_virtual_text = true,
lint_events = {"BufWrite", "CursorHold"},
},
}
The playground comes with :TSHighlightCapturesUnderCursor
that shows any treesitter or syntax highlight groups under the cursor.