mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -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 c_delim_node, c_is_last_in_line ---@type TSNode|nil, boolean|nil, boolean|nil
|
||||
local indent_is_absolute = false
|
||||
if metadata.delimiter then
|
||||
---@type string
|
||||
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)
|
||||
if metadata.open_delimiter then
|
||||
o_delim_node, o_is_last_in_line = find_delimiter(bufnr, node, metadata.open_delimiter)
|
||||
else
|
||||
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
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -113,8 +113,10 @@
|
|||
] @ignore
|
||||
|
||||
((ERROR (parameter_declaration)) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
([(argument_list) (parameter_list)] @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
|
||||
(comment) @auto
|
||||
|
|
|
|||
|
|
@ -14,10 +14,12 @@
|
|||
] @indent
|
||||
|
||||
((struct_shorthand (property)) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
|
||||
((const_list (const_value)) @aligned_indent
|
||||
(#set! "delimiter" "[]"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
|
||||
[
|
||||
"}"
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@
|
|||
] @indent
|
||||
|
||||
;; This only works with expanded tabs.
|
||||
; ((parameters) @aligned_indent (#set! "delimiter" "()"))
|
||||
; ((arguments) @aligned_indent (#set! "delimiter" "()"))
|
||||
; ((parameters) @aligned_indent (#set! "open_delimiter" "(") (#set! "close_delimiter" ")"))
|
||||
; ((arguments) @aligned_indent (#set! "open_delimiter" "(") (#set! "close_delimiter" ")"))
|
||||
|
||||
;; 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
|
||||
|
|
|
|||
|
|
@ -17,13 +17,19 @@
|
|||
] @indent
|
||||
|
||||
((list) @aligned_indent
|
||||
(#set! "delimiter" "[]")
|
||||
(#set! "open_delimiter" "[")
|
||||
(#set! "close_delimiter" "]")
|
||||
(#set! "dedent_lone_close_delimiter" 1)
|
||||
)
|
||||
((dictionary) @aligned_indent
|
||||
(#set! "delimiter" "{}")
|
||||
(#set! "open_delimiter" "{")
|
||||
(#set! "close_delimiter" "}")
|
||||
(#set! "dedent_lone_close_delimiter" 1)
|
||||
)
|
||||
((set) @aligned_indent
|
||||
(#set! "delimiter" "{}")
|
||||
(#set! "open_delimiter" "{")
|
||||
(#set! "close_delimiter" "}")
|
||||
(#set! "dedent_lone_close_delimiter" 1)
|
||||
)
|
||||
|
||||
((for_statement) @indent
|
||||
|
|
@ -44,25 +50,35 @@
|
|||
|
||||
(if_statement
|
||||
condition: (parenthesized_expression) @aligned_indent
|
||||
(#set! "delimiter" "()")
|
||||
(#set! "avoid_last_matching_next" 1))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")")
|
||||
(#set! "avoid_last_matching_next" 1)
|
||||
)
|
||||
(while_statement
|
||||
condition: (parenthesized_expression) @aligned_indent
|
||||
(#set! "delimiter" "()")
|
||||
(#set! "avoid_last_matching_next" 1))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#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
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
((parameters) @aligned_indent
|
||||
(#set! "delimiter" "()")
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")")
|
||||
(#set! "avoid_last_matching_next" 1))
|
||||
((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)
|
||||
(generator_expression ")" @indent_end)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,8 @@
|
|||
] @branch
|
||||
|
||||
((formal_parameters (identifier)) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
|
||||
[
|
||||
")"
|
||||
|
|
|
|||
|
|
@ -23,18 +23,24 @@
|
|||
|
||||
(if_statement
|
||||
condition: (parenthesized_expression) @aligned_indent
|
||||
(#set! "delimiter" "()")
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")")
|
||||
)
|
||||
((ERROR "(" . (_)) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
((argument_list) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
((argument_list) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
((parameters) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
((tuple) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
|
||||
[
|
||||
")"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
(definition) @indent
|
||||
|
||||
((parameters (parameter)) @aligned_indent
|
||||
(#set! "delimiter" "()"))
|
||||
(#set! "open_delimiter" "(")
|
||||
(#set! "close_delimiter" ")"))
|
||||
|
||||
"}" @indent_end
|
||||
|
||||
|
|
|
|||
|
|
@ -7,4 +7,5 @@
|
|||
(block "}" @indent_end @branch)
|
||||
|
||||
((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
|
||||
; ((list (identifier) (property)) @aligned_indent
|
||||
; (#set! "delimiter" ":"))
|
||||
; (#set! "open_delimiter" "(")
|
||||
; (#set! "close_delimiter" ")"))
|
||||
|
||||
[")" "}" "]"] @indent_end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue