summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-09-13 20:42:04 +1000
committerMaxime Coste <mawww@kakoune.org>2018-09-13 20:42:04 +1000
commitc8fd1e1cf6196ea7b0c8f1f75c4d15718b9cd2d7 (patch)
tree1e726f4d18ef0956cab02c3853fe4aeeb29750a0
parent0c3d9ccd20e9833abbec6f003f3fab27da27b869 (diff)
parentde839d14c4cc05d8d44eb8700bf0d96de639808c (diff)
Merge remote-tracking branch 'laelath/c-indent-edits'
-rw-r--r--rc/core/c-family.kak2
-rw-r--r--test/indent/c-family/deindent-if-body/cmd1
-rw-r--r--test/indent/c-family/deindent-if-body/in2
-rw-r--r--test/indent/c-family/deindent-if-body/out3
-rw-r--r--test/indent/c-family/deindent-if-body/rc3
-rw-r--r--test/indent/c-family/deindent-if-body/state1
6 files changed, 12 insertions, 0 deletions
diff --git a/rc/core/c-family.kak b/rc/core/c-family.kak
index def12daa..19d9750b 100644
--- a/rc/core/c-family.kak
+++ b/rc/core/c-family.kak
@@ -48,6 +48,8 @@ define-command -hidden c-family-indent-on-newline %< evaluate-commands -draft -i
try %< execute-keys -draft k <a-x> s[a-zA-Z0-9_-]+:\h*$<ret> j <a-gt> >
# indent after a statement not followed by an opening brace
try %< execute-keys -draft k <a-x> <a-k>\b(if|else|for|while)\h*\(.+?\)\h*$<ret> j <a-gt> >
+ # deindent after a single line statement end
+ try %< execute-keys -draft K <a-x> <a-k>\;\h*$<ret> K <a-x> s\b(if|else|for|while)\h*\(.*\)\h*$|.\z<ret> 1<a-&> >
# align to the opening parenthesis or opening brace (whichever is first)
# on a previous line if its followed by text on the same line
try %< evaluate-commands -draft %<
diff --git a/test/indent/c-family/deindent-if-body/cmd b/test/indent/c-family/deindent-if-body/cmd
new file mode 100644
index 00000000..b11ad994
--- /dev/null
+++ b/test/indent/c-family/deindent-if-body/cmd
@@ -0,0 +1 @@
+c<ret>baz<esc>
diff --git a/test/indent/c-family/deindent-if-body/in b/test/indent/c-family/deindent-if-body/in
new file mode 100644
index 00000000..3a64ea8b
--- /dev/null
+++ b/test/indent/c-family/deindent-if-body/in
@@ -0,0 +1,2 @@
+if (int i = bar())
+ foo();%( )
diff --git a/test/indent/c-family/deindent-if-body/out b/test/indent/c-family/deindent-if-body/out
new file mode 100644
index 00000000..62a0612f
--- /dev/null
+++ b/test/indent/c-family/deindent-if-body/out
@@ -0,0 +1,3 @@
+if (int i = bar())
+ foo();
+baz
diff --git a/test/indent/c-family/deindent-if-body/rc b/test/indent/c-family/deindent-if-body/rc
new file mode 100644
index 00000000..53c40654
--- /dev/null
+++ b/test/indent/c-family/deindent-if-body/rc
@@ -0,0 +1,3 @@
+source "%val{runtime}/colors/default.kak"
+source "%val{runtime}/rc/core/c-family.kak"
+set buffer filetype cpp
diff --git a/test/indent/c-family/deindent-if-body/state b/test/indent/c-family/deindent-if-body/state
new file mode 100644
index 00000000..88f47c8a
--- /dev/null
+++ b/test/indent/c-family/deindent-if-body/state
@@ -0,0 +1 @@
+3.4,3.4