aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorge Harker <george@george-graphics.co.uk>2023-03-19 18:55:48 -0700
committerAmaan Qureshi <amaanq12@gmail.com>2023-03-24 13:07:53 -0400
commitb4fcc611753bd443d30a75c1797a93268faa8aba (patch)
tree47414852a2f687cefe5ef1c42063ec612abbad10
parentrefactor(indent)!: Rework indent, aligned indent (diff)
downloadnvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.tar
nvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.tar.gz
nvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.tar.bz2
nvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.tar.lz
nvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.tar.xz
nvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.tar.zst
nvim-treesitter-b4fcc611753bd443d30a75c1797a93268faa8aba.zip
split delimiter into open_delimiter and close_delimiter
-rw-r--r--lua/nvim-treesitter/indent.lua13
-rw-r--r--queries/c/indents.scm6
-rw-r--r--queries/capnp/indents.scm6
-rw-r--r--queries/gdscript/indents.scm4
-rw-r--r--queries/python/indents.scm42
-rw-r--r--queries/r/indents.scm3
-rw-r--r--queries/starlark/indents.scm18
-rw-r--r--queries/thrift/indents.scm3
-rw-r--r--queries/yang/indents.scm3
-rw-r--r--queries/yuck/indents.scm3
10 files changed, 65 insertions, 36 deletions
diff --git a/lua/nvim-treesitter/indent.lua b/lua/nvim-treesitter/indent.lua
index 8035a73d8..932fa17ff 100644
--- a/lua/nvim-treesitter/indent.lua
+++ b/lua/nvim-treesitter/indent.lua
@@ -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
diff --git a/queries/c/indents.scm b/queries/c/indents.scm
index db7b3a1c9..bb8903d3d 100644
--- a/queries/c/indents.scm
+++ b/queries/c/indents.scm
@@ -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
diff --git a/queries/capnp/indents.scm b/queries/capnp/indents.scm
index 362cc7da0..601862d9d 100644
--- a/queries/capnp/indents.scm
+++ b/queries/capnp/indents.scm
@@ -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" ")"))
[
"}"
diff --git a/queries/gdscript/indents.scm b/queries/gdscript/indents.scm
index 74d14d3b8..b7c0ac836 100644
--- a/queries/gdscript/indents.scm
+++ b/queries/gdscript/indents.scm
@@ -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
diff --git a/queries/python/indents.scm b/queries/python/indents.scm
index 82933c159..166787f28 100644
--- a/queries/python/indents.scm
+++ b/queries/python/indents.scm
@@ -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)
diff --git a/queries/r/indents.scm b/queries/r/indents.scm
index dea537366..c0551eaea 100644
--- a/queries/r/indents.scm
+++ b/queries/r/indents.scm
@@ -20,7 +20,8 @@
] @branch
((formal_parameters (identifier)) @aligned_indent
- (#set! "delimiter" "()"))
+ (#set! "open_delimiter" "(")
+ (#set! "close_delimiter" ")"))
[
")"
diff --git a/queries/starlark/indents.scm b/queries/starlark/indents.scm
index 94cc941ef..1b18664c5 100644
--- a/queries/starlark/indents.scm
+++ b/queries/starlark/indents.scm
@@ -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" ")"))
[
")"
diff --git a/queries/thrift/indents.scm b/queries/thrift/indents.scm
index 768ff795d..73ceff342 100644
--- a/queries/thrift/indents.scm
+++ b/queries/thrift/indents.scm
@@ -1,7 +1,8 @@
(definition) @indent
((parameters (parameter)) @aligned_indent
- (#set! "delimiter" "()"))
+ (#set! "open_delimiter" "(")
+ (#set! "close_delimiter" ")"))
"}" @indent_end
diff --git a/queries/yang/indents.scm b/queries/yang/indents.scm
index aab7ddbad..73e743789 100644
--- a/queries/yang/indents.scm
+++ b/queries/yang/indents.scm
@@ -7,4 +7,5 @@
(block "}" @indent_end @branch)
((string) @aligned_indent
- (#set! "delimiter" "\"\""))
+ (#set! "open_delimiter" "\"")
+ (#set! "close_delimiter" "\""))
diff --git a/queries/yuck/indents.scm b/queries/yuck/indents.scm
index b53ba75dd..9551a6061 100644
--- a/queries/yuck/indents.scm
+++ b/queries/yuck/indents.scm
@@ -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