mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
docs(treesitter): improve 'no parser' error message for InspectTree
Improve error messages for `:InspectTree`, when no parsers are available for the current buffer and filetype. We can show more informative and helpful error message for users (e.g., which lang was searched for): ``` ... No parser available for the given buffer: +... no parser for 'custom_ft' language, see :help treesitter-parsers ``` Also improve the relevant docs for *treesitter-parsers*.
This commit is contained in:
parent
367e52cc79
commit
fbe40caa7c
@ -20,15 +20,23 @@ PARSER FILES *treesitter-parsers*
|
|||||||
Parsers are the heart of tree-sitter. They are libraries that tree-sitter will
|
Parsers are the heart of tree-sitter. They are libraries that tree-sitter will
|
||||||
search for in the `parser` runtime directory. By default, Nvim bundles parsers
|
search for in the `parser` runtime directory. By default, Nvim bundles parsers
|
||||||
for C, Lua, Vimscript, Vimdoc and Treesitter query files, but parsers can be
|
for C, Lua, Vimscript, Vimdoc and Treesitter query files, but parsers can be
|
||||||
installed manually or via a plugin like
|
installed via a plugin like https://github.com/nvim-treesitter/nvim-treesitter
|
||||||
https://github.com/nvim-treesitter/nvim-treesitter. Parsers are searched for
|
or even manually.
|
||||||
as `parser/{lang}.*` in any 'runtimepath' directory. If multiple parsers for
|
|
||||||
the same language are found, the first one is used. (This typically implies
|
Parsers are searched for as `parser/{lang}.*` in any 'runtimepath' directory.
|
||||||
the priority "user config > plugins > bundled".
|
If multiple parsers for the same language are found, the first one is used.
|
||||||
|
(NOTE: This typically implies the priority "user config > plugins > bundled".)
|
||||||
A parser can also be loaded manually using a full path: >lua
|
A parser can also be loaded manually using a full path: >lua
|
||||||
|
|
||||||
vim.treesitter.language.add('python', { path = "/path/to/python.so" })
|
vim.treesitter.language.add('python', { path = "/path/to/python.so" })
|
||||||
<
|
<
|
||||||
|
To associate certain |filetypes| with a treesitter language (name of parser),
|
||||||
|
use |vim.treesitter.language.register()|. For example, to use the `xml`
|
||||||
|
treesitter parser for buffers with filetype `svg` or `xslt`, use: >lua
|
||||||
|
|
||||||
|
vim.treesitter.language.register('xml', { 'svg', 'xslt' })
|
||||||
|
<
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
TREESITTER TREES *treesitter-tree*
|
TREESITTER TREES *treesitter-tree*
|
||||||
*TSTree*
|
*TSTree*
|
||||||
@ -833,6 +841,9 @@ inspect({lang}) *vim.treesitter.language.inspect()*
|
|||||||
register({lang}, {filetype}) *vim.treesitter.language.register()*
|
register({lang}, {filetype}) *vim.treesitter.language.register()*
|
||||||
Register a parser named {lang} to be used for {filetype}(s).
|
Register a parser named {lang} to be used for {filetype}(s).
|
||||||
|
|
||||||
|
Note: this adds or overrides the mapping for {filetype}, any existing
|
||||||
|
mappings from other filetypes to {lang} will be preserved.
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
• {lang} (string) Name of parser
|
• {lang} (string) Name of parser
|
||||||
• {filetype} string|string[] Filetype(s) to associate with lang
|
• {filetype} string|string[] Filetype(s) to associate with lang
|
||||||
|
@ -75,7 +75,8 @@ end
|
|||||||
function TSTreeView:new(bufnr, lang)
|
function TSTreeView:new(bufnr, lang)
|
||||||
local ok, parser = pcall(vim.treesitter.get_parser, bufnr or 0, lang)
|
local ok, parser = pcall(vim.treesitter.get_parser, bufnr or 0, lang)
|
||||||
if not ok then
|
if not ok then
|
||||||
return nil, 'No parser available for the given buffer'
|
local err = parser --[[ @as string ]]
|
||||||
|
return nil, 'No parser available for the given buffer:\n' .. err
|
||||||
end
|
end
|
||||||
|
|
||||||
-- For each child tree (injected language), find the root of the tree and locate the node within
|
-- For each child tree (injected language), find the root of the tree and locate the node within
|
||||||
|
@ -119,6 +119,10 @@ local function ensure_list(x)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- Register a parser named {lang} to be used for {filetype}(s).
|
--- Register a parser named {lang} to be used for {filetype}(s).
|
||||||
|
---
|
||||||
|
--- Note: this adds or overrides the mapping for {filetype}, any existing mappings from other
|
||||||
|
--- filetypes to {lang} will be preserved.
|
||||||
|
---
|
||||||
--- @param lang string Name of parser
|
--- @param lang string Name of parser
|
||||||
--- @param filetype string|string[] Filetype(s) to associate with lang
|
--- @param filetype string|string[] Filetype(s) to associate with lang
|
||||||
function M.register(lang, filetype)
|
function M.register(lang, filetype)
|
||||||
|
Loading…
Reference in New Issue
Block a user