Nvim 的 :help
頁面,由 原始碼 使用 tree-sitter-vimdoc 解析器產生。
tree-sitter
程式庫,用於緩衝區的增量解析:https://tree-sitter.github.io/tree-sitter/parser
執行時目錄中搜尋的程式庫。parser/{lang}.*
。如果找到同一語言的多個解析器,則會使用第一個找到的。(注意:這通常意味著優先順序為「使用者設定 > 插件 > 捆綁」)。vim.treesitter.language.add('python', { path = "/path/to/python.so" })
svg
或 xslt
的緩衝區使用 xml
treesitter 解析器,請使用vim.treesitter.language.register('xml', { 'svg', 'xslt' })
ENABLE_WASMTIME
建置的,則也可以載入 wasm 解析器vim.treesitter.language.add('python', { path = "/path/to/python.wasm" })
query
由一個或多個模式組成。pattern
是在語法樹中的節點類型上定義的。match
對應於語法樹中與模式匹配的特定元素。模式可以選擇性地定義捕獲和謂詞。capture
允許您將名稱與模式中的特定節點關聯。predicate
為匹配添加任意元數據和條件資料。runtimepath
下的 queries
目錄中搜尋 *.scm
檔案中的查詢,其中每個檔案都包含特定語言和用途的查詢,例如,queries/lua/highlights.scm
用於高亮顯示 Lua 檔案。預設情況下,會使用 runtimepath
上的第一個查詢(這通常表示使用者設定優先於插件,而插件優先於 Nvim 捆綁的查詢)。如果查詢應擴展其他查詢而不是取代它們,請使用 treesitter-query-modeline-extends。eq?
謂詞((identifier) @variable.builtin
(#eq? @variable.builtin "self"))
"self"
文字的識別碼。例如,可以使用此類查詢來以不同的方式高亮顯示內建函式或變數。eq?
treesitter-predicate-eq?((identifier) @variable.builtin (#eq? @variable.builtin "self"))
((node1) @left (node2) @right (#eq? @left @right))
match?
treesitter-predicate-match?vim-match?
treesitter-predicate-vim-match?((identifier) @constant (#match? @constant "^[A-Z_]+$"))
^
和 $
定位點會比對節點文字的開頭和結尾。any-match?
treesitter-predicate-any-match?any-vim-match?
treesitter-predicate-any-vim-match?match?
類似,但對於量化模式,只有一個捕獲的節點必須匹配。contains?
treesitter-predicate-contains?((identifier) @foo (#contains? @foo "foo"))
((identifier) @foo-bar (#contains? @foo-bar "foo" "bar"))
any-of?
treesitter-predicate-any-of?((identifier) @foo (#any-of? @foo "foo" "bar"))
has-ancestor?
treesitter-predicate-has-ancestor?((identifier) @variable.builtin
(#any-of? @variable.builtin "begin" "end")
(#has-ancestor? @variable.builtin range_expression))
has-parent?
treesitter-predicate-has-parent?(((field_expression
(field_identifier) @method)) @_parent
(#has-parent? @_parent template_method function_declarator))
eq?
、match?
、lua-match?
、contains?
) 接受 any-
首碼,以便在捕獲所包含的「任何」節點與謂詞匹配時進行匹配。-- TODO: This is a
-- very long
-- comment (just imagine it)
(((comment)+ @comment)
(#match? @comment "TODO"))
(((comment)+ @comment)
(#any-match? @comment "TODO"))
set!
指令會在匹配或節點上設定元數據((identifier) @foo (#set! type "parameter"))
set!
treesitter-directive-set!metadata[key]
(特定於匹配)或 metadata[capture_id][key]
(特定於捕獲)存取。{capture_id}
(選用) {key}
{value}
((identifier) @foo (#set! @foo kind "parameter"))
((node1) @left (node2) @right (#set! type "pair"))
((codeblock) @markup.raw.block (#set! priority 90))
offset!
treesitter-directive-offset!{ {start_row}
、{start_col}
、{end_row}
、{end_col}
},用於將 capture_id
作為 metadata[capture_id].range
的捕獲節點。適用於 treesitter-language-injections。{capture_id}
{start_row}
{start_col}
{end_row}
{end_col}
((identifier) @constant (#offset! @constant 0 1 0 -1))
{capture_id}
{pattern}
{replacement}
(#gsub! @_node ".*%.(.*)" "%1")
{capture_id}
(#trim! @fold)
;
開頭的註解。以下是目前支援的模式行替代方案inherits: {lang}...
treesitter-query-modeline-inherits{lang}
的查詢。除非包含在括弧中:({lang})
,否則這會在 {lang}
的查詢中遞迴下降。注意:這旨在用於包含來自另一種語言的查詢。如果您希望您的查詢擴展同一語言的查詢,請使用 extends
。extends
treesitter-query-modeline-extends;; inherits: typescript,jsx
;; extends
;; extends
;;
;; inherits: css
highlights.scm
的查詢指定的,該查詢會將已解析 TSTree 中的 TSNode 比對到可以分配高亮顯示群組的 capture
。例如,查詢(parameters (identifier) @variable.parameter)
parameters
節點內的任何 identifier
節點比對到名為 @variable.parameter
的捕獲。例如,對於 Lua 程式碼function f(foo, bar) end
(function_declaration ; [1:1 - 24]
name: (identifier) ; [1:10 - 10]
parameters: (parameters ; [1:11 - 20]
name: (identifier) ; [1:12 - 14]
name: (identifier))) ; [1:17 - 19]
foo
和 bar
高亮顯示為 @variable.parameter
。[
"if"
"else"
] @keyword.conditional
highlights.scm
查詢,只需透過 vim.treesitter.start() 即可啟用目前緩衝區的 treesitter 高亮顯示。@
為首碼的捕獲名稱可以直接用作高亮顯示群組。對於許多常用的捕獲,預設情況下,對應的高亮顯示群組會連結到 Nvim 的標準 高亮顯示群組 (例如,@comment
連結到 Comment
),但可以在配色方案中覆寫。@comment.documentation
。如果未定義此群組,則會使用一般 @comment
的醒目提示。這樣,現有的色彩配置就可以直接使用,但可以為查詢新增更具體的變體,使其可用。hi @comment.c guifg=Blue
hi @comment.lua guifg=DarkBlue
hi link @comment.documentation.java String
this
、self
)@variable.parameter 函式的參數 @variable.parameter.builtin 特殊參數(例如 _
、it
)@variable.member 物件和結構體欄位GOTO
和其他標籤(例如 C 中的 label:
),包括 here 文檔標籤typedef <type> <identifier>
)@property
)@property 鍵值對中的鍵+
、*
)go
、Python 中的 async/await
)@keyword.function 定義函式的關鍵字(例如 Go 中的 func
、Python 中的 def
)@keyword.operator 作為英文單字的運算子(例如 and
、or
)@keyword.import 用於包含或匯出模組的關鍵字(例如 Python 中的 import
、from
)@keyword.type 描述命名空間和複合類型的關鍵字(例如 struct
、enum
)@keyword.modifier 修改其他結構的關鍵字(例如 const
、static
、public
)@keyword.repeat 與迴圈相關的關鍵字(例如 for
、while
)@keyword.return 類似 return
和 yield
的關鍵字 @keyword.debug 與除錯相關的關鍵字 @keyword.exception 與例外相關的關鍵字(例如 throw
、catch
)if
、else
)@keyword.conditional.ternary 三元運算子(例如 ?
、:
);
、.
、,
)@punctuation.bracket 括號(例如 ()
、{}
、[]
)@punctuation.special 特殊符號(例如字串內插中的 {}
)ERROR
、FIXME
、DEPRECATED
)@comment.warning 警告類型註解(例如 WARNING
、FIX
、HACK
)@comment.todo todo 類型註解(例如 TODO
、WIP
)@comment.note 筆記類型註解(例如 NOTE
、INFO
、XXX
)$ ... $
)@spell
擷取可用於指示 Nvim 的內建 拼字檢查程式應該檢查節點的拼字。例如,下列擷取會將註解標記為要檢查的內容(comment) @spell
@nospell
,它會停用具有 @spell
的區域的拼字檢查。conceal
中繼資料支援 隱藏。依照慣例,要隱藏的節點會擷取為 @conceal
,但可以使用任何擷取。例如,可以使用以下查詢來隱藏 Markdown 中的程式碼區塊分隔符號(fenced_code_block_delimiter @conceal (#set! conceal ""))
!=
運算子,該字形仍然以與其他運算子相同的方式醒目提示"!=" @operator (#set! conceal "≠")
"priority"
中繼資料屬性來手動變更個別查詢模式的優先順序((super_important_node) @superimportant (#set! priority 105))
<script>
標籤內的 JavaScript 和 <style>
標籤內的 CSS<%
%>
標籤內的 Ruby,以及這些標籤外的 HTML<php
標籤之間的 HTML@injection.content
- 指示應該使用另一種語言重新剖析擷取的節點的內容。@injection.language
- 指示擷取的節點的文字可能包含應該用於重新剖析 @injection.content
的語言名稱。@injection.filename
- 指示擷取的節點的文字可能包含檔案名稱;然後透過 vim.filetype.match() 查閱對應的檔案類型,並將其視為應該用於重新剖析 @injection.content
的語言名稱。injection.language
- 可以用來硬式編碼特定語言的名稱。injection.combined
- 指示樹狀結構中的所有相符節點都應該將其內容剖析為一個巢狀文件。injection.include-children
- 指示應該重新剖析 @injection.content
節點的整個文字,包括其子節點的文字。依預設,子節點的文字將會排除在注入的文件之外。injection.self
- 指示應該使用與節點的 LanguageTree 相同的語言剖析節點的文字。injection.parent
- 指示應該使用與節點的父 LanguageTree 相同的語言剖析擷取的節點的文字。vim.treesitter
Lua 模組的參考手冊,它是 Nvim treesitter 整合的主要介面。以下大部分內容都是從函式文件自動產生的。TSTree
執行個體支援下列方法。TSTree
)TSNode
)TSNode
樹狀結構節點的實例支援以下方法。integer
){index}
(integer
)TSNode?
)integer
){descendant}
) 取得包含 {descendant}
的節點子節點(包括 {descendant}
本身)。a -> b -> c a:child_with_descendant(c) == b a:child_with_descendant(b) == b a:child_with_descendant(a) == nil
{descendant}
(TSNode
)TSNode?
){start_row}
, {start_col}
, {end_row}
, {end_col}
) 取得此節點內跨越給定 (row, column) 位置範圍的最小節點。{start_row}
(integer
){start_col}
(integer
){end_row}
(integer
){end_col}
(integer
)TSNode?
)integer
) (integer
) (integer
){node}
(TSNode
)boolean
)boolean
){name}
(string
)TSNode[]
)boolean
)boolean
)id
對於來自不同樹狀結構的節點是唯一的。string
)fun(): TSNode, string
)boolean
)boolean
){index}
(integer
)TSNode?
)integer
){start_row}
, {start_col}
, {end_row}
, {end_col}
) 取得此節點內跨越給定 (row, column) 位置範圍的最小已命名節點。{start_row}
(integer
){start_col}
(integer
){end_row}
(integer
){end_col}
(integer
)TSNode?
)TSNode?
)TSNode?
)TSNode?
)TSNode?
)TSNode?
){include_bytes}
為 true
){include_bytes}
為 true
){include_bytes}
(boolean?
)string
)integer
) (integer
) (integer
)integer
)TSTree
)string
){lnum}
) vim.treesitter.foldexpr(){lnum}
的折疊層級。可以直接設定為 'foldexpr'vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
{lnum}
(integer?
) 要計算折疊層級的行號string
){winnr}
(integer?
) 視窗控制代碼或 0 表示目前視窗(預設值)string[]
) 擷取名稱清單priority
、conceal
等;如果沒有定義則為空)。{bufnr}
(integer
) 緩衝區編號(0 表示目前緩衝區){row}
(integer
) 位置列{col}
(integer
) 位置欄{capture: string, lang: string, metadata: vim.treesitter.query.TSMetadata}[]
)vim.treesitter.get_parser(bufnr):parse(range)
{opts}
(table?
) 可選的關鍵字引數{bufnr}
(integer?
) 緩衝區編號(nil 或 0 表示目前緩衝區){pos}
([integer, integer]?
) 從 0 開始的 (row, col) 元組。預設為目前視窗中的游標位置。如果 {bufnr}
不是目前緩衝區,則為必填{lang}
(string?
) 解析器語言。(預設值:來自緩衝區檔案類型){ignore_injections}
(boolean?
) 忽略注入的語言(預設為 true){include_anonymous}
(boolean?
) 包含匿名節點(預設為 false)TSNode?
) 給定位置的節點{node_or_range}
(TSNode|table
) 節點或位置表格integer
) start_row (integer
) start_col (integer
) end_row (integer
) end_col{node}
(TSNode
){source}
(integer|string
) 從中擷取 {node}
的緩衝區或字串{opts}
(table?
) 可選參數。metadata[capture_id]
。string
)opts.error = false
以隱藏此訊息並返回 nil(以及錯誤訊息)。警告:此行為將在 Nvim 0.12 中成為預設值,並且此選項將會移除。{bufnr}
(integer?
) 解析器應綁定的緩衝區(預設值:目前緩衝區){lang}
(string?
) 此解析器的語言(預設值:來自緩衝區檔案類型){opts}
(table?
) 要傳遞給已建立語言樹狀結構的選項vim.treesitter.LanguageTree?
) 用於剖析的物件 (string?
) 錯誤訊息(如果適用){node}
, {source}
, {metadata}
) vim.treesitter.get_range(){source}
和 {metadata}
以取得套用指示詞的範圍。{node}
(TSNode
){source}
(integer|string?
) 從中擷取 {node}
的緩衝區或字串{metadata}
(vim.treesitter.query.TSMetadata?
)table
) 包含以下欄位的表格{[1]}
(integer
) 起始列{[2]}
(integer
) 起始欄{[3]}
(integer
) 起始位元組{[4]}
(integer
) 結束列{[5]}
(integer
) 結束欄{[6]}
(integer
) 結束位元組{str}
(string
) 要剖析的文字{lang}
(string
) 此字串的語言{opts}
(table?
) 要傳遞給已建立語言樹狀結構的選項vim.treesitter.LanguageTree
) 用於剖析的物件<Enter>
跳到來源緩衝區中游標下的節點。折疊功能也適用(嘗試 zo、zc 等)。{opts}
(table?
) 可選的選項表格,包含以下可能的鍵值:{command}
建立新的視窗。{winid}
為 nil 時使用。{dest}
(TSNode
) 可能的祖先{source}
(TSNode
) 可能的後代boolean
) 如果 {dest}
是 {source}
的祖先,則為 True{node}
(TSNode
) 定義範圍{line}
(integer
) 行 (從 0 開始){col}
(integer
) 列 (從 0 開始)boolean
) 如果位置在節點範圍內,則為 True{node}
(TSNode
){range}
(table
)boolean
) 如果 {node}
包含 {range}
,則為 Truestart
之後新增 vim.bo.syntax = 'on'
。vim.api.nvim_create_autocmd( 'FileType', { pattern = 'tex',
callback = function(args)
vim.treesitter.start(args.buf, 'latex')
vim.bo[args.buf].syntax = 'on' -- only if additional legacy syntax is needed
end
})
{bufnr}
(integer?
) 要突出顯示的緩衝區 (預設值:目前的緩衝區){lang}
(string?
) 分析器的語言 (預設值:來自緩衝區檔案類型){bufnr}
(integer?
) 要停止突出顯示的緩衝區 (預設值:目前的緩衝區)parser
執行時間目錄或提供的 {path}
中搜尋。可以在啟用 treesitter 功能之前使用,以檢查可用的分析器,例如:if vim.treesitter.language.add('markdown') then
vim.treesitter.start(bufnr, 'markdown')
end
{lang}
(string
) 分析器的名稱 (僅限字母數字和 _
){opts}
(table?
) 選項{path}
(string
) 分析器所在的選用路徑{symbol_name}
(string
) 要載入的語言的內部符號名稱boolean?
) 如果載入分析器,則為 True (string?
) 如果無法載入分析器,則為錯誤{lang}
本身以及透過 vim.treesitter.language.register() 註冊的所有檔案類型。{lang}
(string
) 分析器的名稱string[]
) 檔案類型{filetype}
。對於像 html.glimmer
這樣的複合檔案類型,只會傳回主要的檔案類型。{filetype}
(string
)string?
)boolean
值,表示該節點是否已命名 (即,不是匿名的)。匿名節點會用雙引號 ("
) 包圍。{lang}
(string
) 語言table
){lang}
, {filetype}
) vim.treesitter.language.register(){lang}
的分析器,以便用於 {filetype}
(s)。{filetype}
的對應,任何從其他檔案類型到 {lang}
的現有對應都會保留。{lang}
(string
) 分析器的名稱{filetype}
(string|string[]
) 要與 lang 關聯的檔案類型metadata.key = value
。此外,處理程式可以透過在 metadata 表格上使用捕獲 ID 來設定節點層級資料 metadata[capture_id].key = value
{name}
(string
) 指令的名稱,不含開頭的 #{handler}
(fun(match: table<integer,TSNode[]>, pattern: integer, source: integer|string, predicate: any[], metadata: vim.treesitter.query.TSMetadata)
)(node (#set! conceal "-"))
將取得 predicate { "#set!", "conceal", "-" }
{opts}
(table
) 具有以下欄位的表格{force}
(boolean
) 覆寫同名的現有 predicate{all}
(boolean
) 使用比對表格的正確實作,其中捕獲 ID 對應到節點清單,而不是單一節點。預設值為 true。此選項將在未來版本中移除。{name}
(string
) predicate 的名稱,不含開頭的 #{handler}
(fun(match: table<integer,TSNode[]>, pattern: integer, source: integer|string, predicate: any[], metadata: vim.treesitter.query.TSMetadata): boolean?
){opts}
(table?
) 具有以下欄位的表格{force}
(boolean
) 覆寫同名的現有 predicate{all}
(boolean
) 使用比對表格的正確實作,其中捕獲 ID 對應到節點清單,而不是單一節點。預設值為 true。此選項將在未來版本中移除。:write
儲存它。您可以在 $VIMRUNTIME/queries/
找到範例查詢。{lang}
(string?
) 要開啟查詢編輯器的語言。如果省略,則從目前緩衝區的檔案類型推斷。{lang}
(string
) 用於查詢的語言{query_name}
(string
) 查詢的名稱 (例如 "highlights")vim.treesitter.Query?
) 已剖析的查詢。如果找不到查詢檔案,則為 nil
。{lang}
(string
) 要取得查詢的語言{query_name}
(string
) 要載入的查詢名稱 (例如,"highlights"){is_included}
(boolean?
) 內部參數,大多數情況下保留為 nil
string[]
) query_files 要針對給定查詢和語言載入的檔案清單{buf}
中的查詢檔案是否有錯誤/lua/highlights.scm
結尾,則會使用 lua
語言的分析器。{buf}
(integer
) 緩衝區控制代碼{opts}
(table?
) 可選的關鍵字引數{langs}
(string|string[]
) 用於檢查查詢的語言。如果指定了多種語言,則會針對所有語言驗證查詢{clear}
(boolean
) 僅清除目前的檢查錯誤string[]
) 支援的指令。string[]
) 支援的 predicate。{findstart}
, {base}
) vim.treesitter.query.omnifunc()vim.bo.omnifunc = 'v:lua.vim.treesitter.query.omnifunc'
{findstart}
(0|1
){base}
(string
)Query
(請參閱 lua-treesitter-query) 物件,該物件可以使用 iter_captures
和 iter_matches
方法來搜尋語法樹中針對 {query}
中定義的模式的節點。{query}
的額外內容公開 info
和 captures
。captures
包含在 {query}
中定義的唯一捕獲名稱清單。info.captures
也指向 captures
。info.patterns
包含有關 predicate 的資訊。{lang}
(string
) 用於查詢的語言{query}
(string
) 以 s-expr 語法表示的查詢vim.treesitter.Query
) 已剖析的查詢{source}
;然後呼叫者必須確保使用與緩衝區當前文本一致的最新解析樹(如果相關)。可以使用 {start}
和 {stop}
來限制行範圍內的匹配(這通常與根節點作為 {node}
一起使用,即在當前視窗中取得語法高亮匹配)。如果省略,則從給定節點使用 {start}
和 {stop}
行值。for id, node, metadata, match in query:iter_captures(tree:root(), bufnr, first, last) do
local name = query.captures[id] -- name of the capture in the query
-- typically useful info about the node:
local type = node:type() -- type of the captured node
local row1, col1, row2, col2 = node:range() -- range of the capture
-- ... use the info here ...
end
{node}
(TSNode
) 將在其中進行搜尋的節點。{source}
(integer|string
) 要從中擷取文字的來源緩衝區或字串{start}
(integer?
) 搜尋的起始行。預設為 node:start()
。{stop}
(integer?
) 搜尋的停止行(不包含)。預設為 node:end_()
。fun(end_line: integer?): integer, TSNode, vim.treesitter.query.TSMetadata, TSQueryMatch
) 捕獲 ID、捕獲節點、中繼資料、匹配項{node}
內的所有匹配項。參數與 Query:iter_captures() 的參數相同,但迭代的值不同:查詢中模式的(從 1 開始)索引、將捕獲索引對應到節點清單的表格,以及來自任何處理匹配項的指令的中繼資料。for pattern, match, metadata in cquery:iter_matches(tree:root(), bufnr, 0, -1) do
for id, nodes in pairs(match) do
local name = query.captures[id]
for _, node in ipairs(nodes) do
-- `node` was captured by the `name` capture in the match
local node_data = metadata[id] -- Node level metadata
... use the info here ...
end
end
end
{node}
(TSNode
) 將在其中進行搜尋的節點。{source}
(integer|string
) 要搜尋的來源緩衝區或字串{start}
(integer?
) 搜尋的起始行。預設為 node:start()
。{stop}
(integer?
) 搜尋的停止行(不包含)。預設為 node:end_()
。{opts}
(table?
) 可選的關鍵字引數false
(預設值為 true
)時,傳回的表格將捕獲 ID 對應到單個(最後一個)節點,而不是完整的匹配節點清單。此選項僅用於向後相容性,並將在未來的版本中移除。fun(): integer, table<integer, TSNode[]>, vim.treesitter.query.TSMetadata
) 模式 ID、匹配項、中繼資料{lang}
(string
) 用於查詢的語言{query_name}
(string
) 查詢名稱(例如,「highlights」){text}
(string
) 查詢文字(未解析)。{lang}
的根 treesitter 解析器和任何「注入」的語言解析器,它們本身可以遞迴地注入其他語言。例如,一個包含一些 Vimscript 命令的 Lua 緩衝區需要多個解析器才能完全理解其內容。local parser = vim.treesitter.get_parser(bufnr, lang)
bufnr=0
表示目前的緩衝區)。lang
預設為 'filetype'。 注意:目前,解析器會保留在緩衝區的生命週期內,但這可能會變更;如果外掛程式需要增量更新,則應保留對解析器物件的參照。local tree = parser:parse({ start_row, end_row })
parse()
。如果沒有編輯緩衝區,則會再次傳回相同的樹狀結構,而不會額外執行作業。如果先前已解析緩衝區,則會對變更的部分執行增量解析。{range}
(table
) 具有下列欄位的表格{[1]}
(integer
) 起始列{[2]}
(integer
) 起始欄{[3]}
(integer
) 結束列{[4]}
(integer
) 結束欄boolean
)remove_child
才能將其移除。{fn}
(fun(tree: TSTree, ltree: vim.treesitter.LanguageTree)
){start_row}
, {start_col}
, {start_bytes}
, {end_row}
, {end_col}
, {end_bytes}
} 的形式表示一個範圍。table<integer, Range6[]>
){reload}
(boolean?
){exclude_children}
) LanguageTree:is_valid(){exclude_children}
(boolean?
) 是否忽略子項的有效性(預設值為 false
)boolean
){range}
(table
) 具有下列欄位的表格{[1]}
(integer
) 起始列{[2]}
(integer
) 起始欄{[3]}
(integer
) 結束列{[4]}
(integer
) 結束欄vim.treesitter.LanguageTree
) 管理 {range}
的樹狀結構{range}
, {opts}
) 取得包含 {range}
的最小命名節點。{range}
(table
) 具有下列欄位的表格{[1]}
(integer
) 起始列{[2]}
(integer
) 起始欄{[3]}
(integer
) 結束列{[4]}
(integer
) 結束欄{opts}
(table?
) 具有以下欄位的表格{ignore_injections}
(boolean
,預設值:true
) 忽略注入的語言TSNode?
){range}
(table
) 具有下列欄位的表格{[1]}
(integer
) 起始列{[2]}
(integer
) 起始欄{[3]}
(integer
) 結束列{[4]}
(integer
) 結束欄{opts}
(table?
) 具有以下欄位的表格{ignore_injections}
(boolean
,預設值:true
) 忽略注入的語言TSNode?
){range}
) LanguageTree:parse(){}
,通常只有根樹狀結構)的區域都會一律解析;否則(通常是注入)僅當它與 {range}
相交時才會解析(或者如果 {range}
為 true
)。{range}
(boolean|Range?
) 在解析器的來源中解析此範圍。設定為 true
以執行來源的完整解析(注意:可能很慢!) 設定為 false|nil
以僅解析具有空白範圍的區域(通常只有沒有注入的根樹狀結構)。table<integer, TSTree>
)on_bytes
:請參閱 nvim_buf_attach(),但在解析器回呼之後會呼叫此回呼。on_changedtree
:每次樹狀結構有語法變更時都會呼叫的回呼。它會傳遞兩個引數:已變更範圍(作為節點範圍)的表格和已變更的樹狀結構。on_child_added
:在將子項新增至樹狀結構時發出。on_child_removed
:在從樹狀結構中移除子項時發出。on_detach
:在緩衝區分離時發出,請參閱 nvim_buf_detach_event。採用一個引數,即緩衝區的編號。{recursive}
(boolean?
) 為所有子項遞迴套用回呼。任何新的子項也會繼承回呼。{range}
(table
) 具有下列欄位的表格{[1]}
(integer
) 起始列{[2]}
(integer
) 起始欄{[3]}
(integer
) 結束列{[4]}
(integer
) 結束欄{opts}
(table?
) 具有以下欄位的表格{ignore_injections}
(boolean
,預設值:true
) 忽略注入的語言TSTree?
)table<integer, TSTree>
)