aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Seitz <stephan.seitz@fau.de>2022-01-22 14:07:01 +0100
committerStephan Seitz <stephan.seitz@fau.de>2022-02-05 18:54:55 +0100
commit62982378b81ce91d5cdf70047113e51e13434286 (patch)
tree28dacb8eede933202f85860846138cb7afa40b52
parentfeat(indents): add support for language injection (diff)
downloadnvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.tar
nvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.tar.gz
nvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.tar.bz2
nvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.tar.lz
nvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.tar.xz
nvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.tar.zst
nvim-treesitter-62982378b81ce91d5cdf70047113e51e13434286.zip
indents(cpp): indent at field_initializer_list
-rw-r--r--lua/nvim-treesitter/indent.lua2
-rw-r--r--queries/cpp/indents.scm2
-rw-r--r--tests/indent/cpp/initializer_list.cpp17
3 files changed, 20 insertions, 1 deletions
diff --git a/lua/nvim-treesitter/indent.lua b/lua/nvim-treesitter/indent.lua
index d63f43207..a86b5baf5 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 cb0277951..f1007dd28 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 000000000..5a27d17f5
--- /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;
+};
+