diff options
| author | George Harker <george@george-graphics.co.uk> | 2023-03-19 18:55:48 -0700 |
|---|---|---|
| committer | Amaan Qureshi <amaanq12@gmail.com> | 2023-03-24 13:07:53 -0400 |
| commit | b4fcc611753bd443d30a75c1797a93268faa8aba (patch) | |
| tree | 47414852a2f687cefe5ef1c42063ec612abbad10 | |
| parent | refactor(indent)!: Rework indent, aligned indent (diff) | |
| download | nvim-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.lua | 13 | ||||
| -rw-r--r-- | queries/c/indents.scm | 6 | ||||
| -rw-r--r-- | queries/capnp/indents.scm | 6 | ||||
| -rw-r--r-- | queries/gdscript/indents.scm | 4 | ||||
| -rw-r--r-- | queries/python/indents.scm | 42 | ||||
| -rw-r--r-- | queries/r/indents.scm | 3 | ||||
| -rw-r--r-- | queries/starlark/indents.scm | 18 | ||||
| -rw-r--r-- | queries/thrift/indents.scm | 3 | ||||
| -rw-r--r-- | queries/yang/indents.scm | 3 | ||||
| -rw-r--r-- | queries/yuck/indents.scm | 3 |
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 |
