diff options
| author | Stephan Seitz <stephan.seitz@fau.de> | 2022-01-22 18:24:38 +0100 |
|---|---|---|
| committer | Stephan Seitz <stephan.seitz@fau.de> | 2022-02-05 18:54:55 +0100 |
| commit | fd5a551d7ca3c0d4fc384884c9d3201beb07a95a (patch) | |
| tree | a10e33b9e6a761c95590105b3be3094338da033d | |
| parent | indents(c): fix indentation on block comment (diff) | |
| download | nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.tar nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.tar.gz nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.tar.bz2 nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.tar.lz nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.tar.xz nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.tar.zst nvim-treesitter-fd5a551d7ca3c0d4fc384884c9d3201beb07a95a.zip | |
indents(c): add zero_indent for #if
| -rw-r--r-- | lua/nvim-treesitter/indent.lua | 5 | ||||
| -rw-r--r-- | queries/c/indents.scm | 14 | ||||
| -rw-r--r-- | tests/indent/c/aligned_indent.c | 3 | ||||
| -rw-r--r-- | tests/indent/c/comment.c | 3 | ||||
| -rw-r--r-- | tests/indent/c/unfinished_comment.c | 2 | ||||
| -rw-r--r-- | tests/indent/c_spec.lua | 2 | ||||
| -rw-r--r-- | tests/indent/cpp_spec.lua | 2 |
7 files changed, 18 insertions, 13 deletions
diff --git a/lua/nvim-treesitter/indent.lua b/lua/nvim-treesitter/indent.lua index 04aa141bb..4ec0a3e23 100644 --- a/lua/nvim-treesitter/indent.lua +++ b/lua/nvim-treesitter/indent.lua @@ -35,6 +35,7 @@ local get_indents = tsutils.memoize_by_buf_tick(function(bufnr, root, lang) branch = {}, ignore = {}, aligned_indent = {}, + zero_indent = {}, } for name, node, metadata in queries.iter_captures(bufnr, "indents", root, lang) do @@ -88,6 +89,10 @@ function M.get_indent(lnum) -- tracks to ensure multiple indent levels are not applied for same line local is_processed_by_row = {} + if q.zero_indent[node:id()] then + return 0 + end + while node do -- do 'autoindent' if not marked as @indent if not q.indent[node:id()] and q.auto[node:id()] and node:start() < lnum - 1 and lnum - 1 <= node:end_() then diff --git a/queries/c/indents.scm b/queries/c/indents.scm index 4438dec73..f601962d1 100644 --- a/queries/c/indents.scm +++ b/queries/c/indents.scm @@ -27,15 +27,19 @@ (compound_statement "}" @indent_end) [ + "else" + ")" + "}" + (statement_identifier) +] @branch + +[ "#define" "#ifdef" "#if" "#else" - "else" "#endif" - ")" - "}" -] @branch +] @zero_indent [ (preproc_arg) @@ -47,7 +51,7 @@ ([(argument_list) (parameter_list)] @aligned_indent (#set! "delimiter" "()")) -([ (ERROR) (comment) ] @aligned_indent +((comment) @aligned_indent (#lua-match? @aligned_indent "^/\*")) ((comment) @ignore (#lua-match? @ignore "^//")) diff --git a/tests/indent/c/aligned_indent.c b/tests/indent/c/aligned_indent.c index 75555b971..7a3120497 100644 --- a/tests/indent/c/aligned_indent.c +++ b/tests/indent/c/aligned_indent.c @@ -5,6 +5,3 @@ void foo(int a, void foo(int a, int b - - - diff --git a/tests/indent/c/comment.c b/tests/indent/c/comment.c index 435b70661..b32de8218 100644 --- a/tests/indent/c/comment.c +++ b/tests/indent/c/comment.c @@ -6,6 +6,3 @@ void foo(int *x, int y) { *x = y; } - -/* - * diff --git a/tests/indent/c/unfinished_comment.c b/tests/indent/c/unfinished_comment.c new file mode 100644 index 000000000..fb48bfb82 --- /dev/null +++ b/tests/indent/c/unfinished_comment.c @@ -0,0 +1,2 @@ +/* + * diff --git a/tests/indent/c_spec.lua b/tests/indent/c_spec.lua index c7d21e904..40d393ca8 100644 --- a/tests/indent/c_spec.lua +++ b/tests/indent/c_spec.lua @@ -13,7 +13,7 @@ describe("indent C:", function() runner:whole_file(".", { expected_failures = { "./preproc_func.c", - "./label.c", + "./unfinished_comment.c", }, }) end) diff --git a/tests/indent/cpp_spec.lua b/tests/indent/cpp_spec.lua index 56be5db47..b3f394375 100644 --- a/tests/indent/cpp_spec.lua +++ b/tests/indent/cpp_spec.lua @@ -16,7 +16,7 @@ describe("indent C++:", function() expected_failures = { -- C "c/preproc_func.c", - "c/label.c", + "c/unfinished_comment.c", }, }) end) |
