mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-18 03:10:04 -04:00
split delimiter into open_delimiter and close_delimiter
This commit is contained in:
parent
d1333dd7e5
commit
b4fcc61175
10 changed files with 65 additions and 36 deletions
|
|
@ -208,15 +208,14 @@ function M.get_indent(lnum)
|
||||||
local o_delim_node, o_is_last_in_line ---@type TSNode|nil, boolean|nil
|
local o_delim_node, o_is_last_in_line ---@type TSNode|nil, boolean|nil
|
||||||
local c_delim_node, c_is_last_in_line ---@type TSNode|nil, boolean|nil, boolean|nil
|
local c_delim_node, c_is_last_in_line ---@type TSNode|nil, boolean|nil, boolean|nil
|
||||||
local indent_is_absolute = false
|
local indent_is_absolute = false
|
||||||
if metadata.delimiter then
|
if metadata.open_delimiter then
|
||||||
---@type string
|
o_delim_node, o_is_last_in_line = find_delimiter(bufnr, node, metadata.open_delimiter)
|
||||||
local opening_delimiter = metadata.delimiter and metadata.delimiter:sub(1, 1)
|
|
||||||
o_delim_node, o_is_last_in_line = find_delimiter(bufnr, node, opening_delimiter)
|
|
||||||
---@type string
|
|
||||||
local closing_delimiter = metadata.delimiter and metadata.delimiter:sub(2, 2)
|
|
||||||
c_delim_node, c_is_last_in_line = find_delimiter(bufnr, node, closing_delimiter)
|
|
||||||
else
|
else
|
||||||
o_delim_node = node
|
o_delim_node = node
|
||||||
|
end
|
||||||
|
if metadata.close_delimiter then
|
||||||
|
c_delim_node, c_is_last_in_line = find_delimiter(bufnr, node, metadata.close_delimiter)
|
||||||
|
else
|
||||||
c_delim_node = node
|
c_delim_node = node
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,10 @@
|
||||||
] @ignore
|
] @ignore
|
||||||
|
|
||||||
((ERROR (parameter_declaration)) @aligned_indent
|
((ERROR (parameter_declaration)) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
([(argument_list) (parameter_list)] @aligned_indent
|
([(argument_list) (parameter_list)] @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
(comment) @auto
|
(comment) @auto
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,12 @@
|
||||||
] @indent
|
] @indent
|
||||||
|
|
||||||
((struct_shorthand (property)) @aligned_indent
|
((struct_shorthand (property)) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
((const_list (const_value)) @aligned_indent
|
((const_list (const_value)) @aligned_indent
|
||||||
(#set! "delimiter" "[]"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
[
|
[
|
||||||
"}"
|
"}"
|
||||||
|
|
|
||||||
|
|
@ -42,8 +42,8 @@
|
||||||
] @indent
|
] @indent
|
||||||
|
|
||||||
;; This only works with expanded tabs.
|
;; This only works with expanded tabs.
|
||||||
; ((parameters) @aligned_indent (#set! "delimiter" "()"))
|
; ((parameters) @aligned_indent (#set! "open_delimiter" "(") (#set! "close_delimiter" ")"))
|
||||||
; ((arguments) @aligned_indent (#set! "delimiter" "()"))
|
; ((arguments) @aligned_indent (#set! "open_delimiter" "(") (#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
;; The following queries either do not agree with the current body parsing or are
|
;; The following queries either do not agree with the current body parsing or are
|
||||||
;; attempted workarounds. Specifically as the last statement of a body. Opening
|
;; attempted workarounds. Specifically as the last statement of a body. Opening
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,19 @@
|
||||||
] @indent
|
] @indent
|
||||||
|
|
||||||
((list) @aligned_indent
|
((list) @aligned_indent
|
||||||
(#set! "delimiter" "[]")
|
(#set! "open_delimiter" "[")
|
||||||
|
(#set! "close_delimiter" "]")
|
||||||
|
(#set! "dedent_lone_close_delimiter" 1)
|
||||||
)
|
)
|
||||||
((dictionary) @aligned_indent
|
((dictionary) @aligned_indent
|
||||||
(#set! "delimiter" "{}")
|
(#set! "open_delimiter" "{")
|
||||||
|
(#set! "close_delimiter" "}")
|
||||||
|
(#set! "dedent_lone_close_delimiter" 1)
|
||||||
)
|
)
|
||||||
((set) @aligned_indent
|
((set) @aligned_indent
|
||||||
(#set! "delimiter" "{}")
|
(#set! "open_delimiter" "{")
|
||||||
|
(#set! "close_delimiter" "}")
|
||||||
|
(#set! "dedent_lone_close_delimiter" 1)
|
||||||
)
|
)
|
||||||
|
|
||||||
((for_statement) @indent
|
((for_statement) @indent
|
||||||
|
|
@ -44,25 +50,35 @@
|
||||||
|
|
||||||
(if_statement
|
(if_statement
|
||||||
condition: (parenthesized_expression) @aligned_indent
|
condition: (parenthesized_expression) @aligned_indent
|
||||||
(#set! "delimiter" "()")
|
(#set! "open_delimiter" "(")
|
||||||
(#set! "avoid_last_matching_next" 1))
|
(#set! "close_delimiter" ")")
|
||||||
|
(#set! "avoid_last_matching_next" 1)
|
||||||
|
)
|
||||||
(while_statement
|
(while_statement
|
||||||
condition: (parenthesized_expression) @aligned_indent
|
condition: (parenthesized_expression) @aligned_indent
|
||||||
(#set! "delimiter" "()")
|
(#set! "open_delimiter" "(")
|
||||||
(#set! "avoid_last_matching_next" 1))
|
(#set! "close_delimiter" ")")
|
||||||
|
(#set! "avoid_last_matching_next" 1)
|
||||||
|
)
|
||||||
|
|
||||||
(ERROR "(" @aligned_indent (#set! "delimiter" "()") . (_))
|
(ERROR "(" @aligned_indent (#set! "open_delimiter" "(") (#set! "close_delimiter" ")") . (_))
|
||||||
((argument_list) @aligned_indent
|
((argument_list) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
((parameters) @aligned_indent
|
((parameters) @aligned_indent
|
||||||
(#set! "delimiter" "()")
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")")
|
||||||
(#set! "avoid_last_matching_next" 1))
|
(#set! "avoid_last_matching_next" 1))
|
||||||
((tuple) @aligned_indent
|
((tuple) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
(ERROR "[" @aligned_indent (#set! "delimiter" "[]") . (_))
|
(ERROR "[" @aligned_indent (#set! "open_delimiter" "[") (#set! "close_delimiter" "]") . (_))
|
||||||
|
(list "]" @indent_end)
|
||||||
|
|
||||||
(ERROR "{" @aligned_indent (#set! "delimiter" "{}") . (_))
|
(ERROR "{" @aligned_indent (#set! "open_delimiter" "{") (#set! "close_delimiter" "}") . (_))
|
||||||
|
(dictionary "}" @indent_end)
|
||||||
|
(set "}" @indent_end)
|
||||||
|
|
||||||
(parenthesized_expression ")" @indent_end)
|
(parenthesized_expression ")" @indent_end)
|
||||||
(generator_expression ")" @indent_end)
|
(generator_expression ")" @indent_end)
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,8 @@
|
||||||
] @branch
|
] @branch
|
||||||
|
|
||||||
((formal_parameters (identifier)) @aligned_indent
|
((formal_parameters (identifier)) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
[
|
[
|
||||||
")"
|
")"
|
||||||
|
|
|
||||||
|
|
@ -23,18 +23,24 @@
|
||||||
|
|
||||||
(if_statement
|
(if_statement
|
||||||
condition: (parenthesized_expression) @aligned_indent
|
condition: (parenthesized_expression) @aligned_indent
|
||||||
(#set! "delimiter" "()")
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")")
|
||||||
)
|
)
|
||||||
((ERROR "(" . (_)) @aligned_indent
|
((ERROR "(" . (_)) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
((argument_list) @aligned_indent
|
((argument_list) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
((argument_list) @aligned_indent
|
((argument_list) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
((parameters) @aligned_indent
|
((parameters) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
((tuple) @aligned_indent
|
((tuple) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
[
|
[
|
||||||
")"
|
")"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
(definition) @indent
|
(definition) @indent
|
||||||
|
|
||||||
((parameters (parameter)) @aligned_indent
|
((parameters (parameter)) @aligned_indent
|
||||||
(#set! "delimiter" "()"))
|
(#set! "open_delimiter" "(")
|
||||||
|
(#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
"}" @indent_end
|
"}" @indent_end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,5 @@
|
||||||
(block "}" @indent_end @branch)
|
(block "}" @indent_end @branch)
|
||||||
|
|
||||||
((string) @aligned_indent
|
((string) @aligned_indent
|
||||||
(#set! "delimiter" "\"\""))
|
(#set! "open_delimiter" "\"")
|
||||||
|
(#set! "close_delimiter" "\""))
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
|
|
||||||
; TODO: can't get this to work, goal is to indent at the property ":" prefix
|
; TODO: can't get this to work, goal is to indent at the property ":" prefix
|
||||||
; ((list (identifier) (property)) @aligned_indent
|
; ((list (identifier) (property)) @aligned_indent
|
||||||
; (#set! "delimiter" ":"))
|
; (#set! "open_delimiter" "(")
|
||||||
|
; (#set! "close_delimiter" ")"))
|
||||||
|
|
||||||
[")" "}" "]"] @indent_end
|
[")" "}" "]"] @indent_end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue