split delimiter into open_delimiter and close_delimiter

This commit is contained in:
George Harker 2023-03-19 18:55:48 -07:00 committed by Amaan Qureshi
parent d1333dd7e5
commit b4fcc61175
10 changed files with 65 additions and 36 deletions

View file

@ -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

View file

@ -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

View file

@ -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" ")"))
[ [
"}" "}"

View file

@ -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

View file

@ -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)

View file

@ -20,7 +20,8 @@
] @branch ] @branch
((formal_parameters (identifier)) @aligned_indent ((formal_parameters (identifier)) @aligned_indent
(#set! "delimiter" "()")) (#set! "open_delimiter" "(")
(#set! "close_delimiter" ")"))
[ [
")" ")"

View file

@ -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" ")"))
[ [
")" ")"

View file

@ -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

View file

@ -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" "\""))

View file

@ -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