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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,8 @@
(definition) @indent
((parameters (parameter)) @aligned_indent
(#set! "delimiter" "()"))
(#set! "open_delimiter" "(")
(#set! "close_delimiter" ")"))
"}" @indent_end

View file

@ -7,4 +7,5 @@
(block "}" @indent_end @branch)
((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
; ((list (identifier) (property)) @aligned_indent
; (#set! "delimiter" ":"))
; (#set! "open_delimiter" "(")
; (#set! "close_delimiter" ")"))
[")" "}" "]"] @indent_end