mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
treesitter(docs): update and refresh docs
This commit is contained in:
@@ -10,6 +10,12 @@ local parsers = {}
|
||||
local Parser = {}
|
||||
Parser.__index = Parser
|
||||
|
||||
--- Parses the buffer if needed and returns a tree.
|
||||
--
|
||||
-- Calling this will call the on_changedtree callbacks if the tree has changed.
|
||||
--
|
||||
-- @returns An up to date tree
|
||||
-- @returns If the tree changed with this call, the changed ranges
|
||||
function Parser:parse()
|
||||
if self.valid then
|
||||
return self.tree
|
||||
@@ -40,6 +46,9 @@ function Parser:_on_lines(bufnr, changed_tick, start_row, old_stop_row, stop_row
|
||||
end
|
||||
end
|
||||
|
||||
--- Sets the included ranges for the current parser
|
||||
--
|
||||
-- @param ranges A table of nodes that will be used as the ranges the parser should include.
|
||||
function Parser:set_included_ranges(ranges)
|
||||
self._parser:set_included_ranges(ranges)
|
||||
-- The buffer will need to be parsed again later
|
||||
|
||||
@@ -7,9 +7,6 @@ local ts_hs_ns = a.nvim_create_namespace("treesitter_hl")
|
||||
|
||||
-- These are conventions defined by tree-sitter, though it
|
||||
-- needs to be user extensible also.
|
||||
-- TODO(bfredl): this is very much incomplete, we will need to
|
||||
-- go through a few tree-sitter provided queries and decide
|
||||
-- on translations that makes the most sense.
|
||||
TSHighlighter.hl_map = {
|
||||
["error"] = "Error",
|
||||
|
||||
@@ -112,11 +109,8 @@ function TSHighlighter:set_query(query)
|
||||
query = vim.treesitter.get_query(self.parser.lang, 'highlights')
|
||||
|
||||
if query == nil then
|
||||
a.err_writeln("No highlights.scm query found for " .. self.parser.lang)
|
||||
|
||||
if query == nil then
|
||||
query = vim.treesitter.parse_query(self.parser.lang, "")
|
||||
end
|
||||
a.nvim_err_writeln("No highlights.scm query found for " .. self.parser.lang)
|
||||
query = vim.treesitter.parse_query(self.parser.lang, "")
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -2,6 +2,12 @@ local a = vim.api
|
||||
|
||||
local M = {}
|
||||
|
||||
--- Asserts that the provided language is installed, and optionnaly provide a path for the parser
|
||||
--
|
||||
-- Parsers are searched in the `parser` runtime directory.
|
||||
--
|
||||
-- @param lang The language the parser should parse
|
||||
-- @param path Optionnal path the parser is located at
|
||||
function M.require_language(lang, path)
|
||||
if vim._ts_has_language(lang) then
|
||||
return true
|
||||
@@ -11,13 +17,18 @@ function M.require_language(lang, path)
|
||||
local paths = a.nvim_get_runtime_file(fname, false)
|
||||
if #paths == 0 then
|
||||
-- TODO(bfredl): help tag?
|
||||
error("no parser for '"..lang.."' language")
|
||||
error("no parser for '"..lang.."' language, see :help treesitter-parsers")
|
||||
end
|
||||
path = paths[1]
|
||||
end
|
||||
vim._ts_add_language(path, lang)
|
||||
end
|
||||
|
||||
--- Inspects the provided language.
|
||||
--
|
||||
-- Inspecting provides some useful informations on the language like node names, ...
|
||||
--
|
||||
-- @param lang The language.
|
||||
function M.inspect_language(lang)
|
||||
M.require_language(lang)
|
||||
return vim._ts_inspect_language(lang)
|
||||
|
||||
@@ -67,6 +67,11 @@ local predicate_handlers = {
|
||||
end,
|
||||
}
|
||||
|
||||
--- Adds a new predicates to be used in queries
|
||||
--
|
||||
-- @param name the name of the predicate, without leading #
|
||||
-- @param handler the handler function to be used
|
||||
-- signature will be (match, pattern, bufnr, predicate)
|
||||
function M.add_predicate(name, handler)
|
||||
if predicate_handlers[name] then
|
||||
a.nvim_err_writeln("It is recomended to not overwrite predicates.")
|
||||
@@ -93,6 +98,15 @@ function Query:match_preds(match, pattern, bufnr)
|
||||
return true
|
||||
end
|
||||
|
||||
--- Iterates of the captures of self on a given range.
|
||||
--
|
||||
-- @param node The node under witch the search will occur
|
||||
-- @param buffer The source buffer to search
|
||||
-- @param start The starting line of the search
|
||||
-- @param stop The stoping line of the search (end-exclusive)
|
||||
--
|
||||
-- @returns The matching capture id
|
||||
-- @returns The captured node
|
||||
function Query:iter_captures(node, bufnr, start, stop)
|
||||
if bufnr == 0 then
|
||||
bufnr = vim.api.nvim_get_current_buf()
|
||||
@@ -112,6 +126,15 @@ function Query:iter_captures(node, bufnr, start, stop)
|
||||
return iter
|
||||
end
|
||||
|
||||
--- Iterates of the matches of self on a given range.
|
||||
--
|
||||
-- @param node The node under witch the search will occur
|
||||
-- @param buffer The source buffer to search
|
||||
-- @param start The starting line of the search
|
||||
-- @param stop The stoping line of the search (end-exclusive)
|
||||
--
|
||||
-- @returns The matching pattern id
|
||||
-- @returns The matching match
|
||||
function Query:iter_matches(node, bufnr, start, stop)
|
||||
if bufnr == 0 then
|
||||
bufnr = vim.api.nvim_get_current_buf()
|
||||
|
||||
Reference in New Issue
Block a user