diff options
| -rw-r--r-- | lua/nvim-treesitter/indent.lua | 2 | ||||
| -rw-r--r-- | queries/cpp/indents.scm | 2 | ||||
| -rw-r--r-- | tests/indent/cpp/initializer_list.cpp | 17 |
3 files changed, 20 insertions, 1 deletions
diff --git a/lua/nvim-treesitter/indent.lua b/lua/nvim-treesitter/indent.lua index d63f4320..a86b5baf 100644 --- a/lua/nvim-treesitter/indent.lua +++ b/lua/nvim-treesitter/indent.lua @@ -117,7 +117,7 @@ function M.get_indent(lnum) end -- do not indent for nodes that starts-and-ends on same line and starts on target line (lnum) - if not is_processed_by_row[srow] and (q.indent[node:id()] and srow ~= erow and srow ~= lnum - 1) then + if not is_processed_by_row[srow] and (q.indent[node:id()] and srow ~= erow and ((srow ~= lnum - 1) or q.indent[node:id()].start_at_same_line)) then indent = indent + indent_size is_processed = true end diff --git a/queries/cpp/indents.scm b/queries/cpp/indents.scm index cb027795..f1007dd2 100644 --- a/queries/cpp/indents.scm +++ b/queries/cpp/indents.scm @@ -5,4 +5,6 @@ (condition_clause) ] @indent +((field_initializer_list) @indent + (#set! "start_at_same_line" 1)) (access_specifier) @branch diff --git a/tests/indent/cpp/initializer_list.cpp b/tests/indent/cpp/initializer_list.cpp new file mode 100644 index 00000000..5a27d17f --- /dev/null +++ b/tests/indent/cpp/initializer_list.cpp @@ -0,0 +1,17 @@ +class Foo { + + Foo(int a, int b, int c, int d) + : m_a(a) + , m_b(b) + , m_c(c) + , m_d(d) {} + + Foo(int a, int b, int c) : + m_a(a), + m_b(b), + m_c(c) + {} + + int m_a, m_b, m_c, m_d; +}; + |
