Support aligning to opening { as well as ( in c-family indent

This commit is contained in:
Maxime Coste 2017-05-20 10:49:56 +01:00
parent b440d9f537
commit cab0adaa53
9 changed files with 31 additions and 11 deletions

View File

@ -28,26 +28,27 @@ def -hidden c-family-trim-autoindent %[ eval -draft -itersel %[
try %[ exec <a-x> 1s^(\h+)$<ret> d ] try %[ exec <a-x> 1s^(\h+)$<ret> d ]
] ] ] ]
def -hidden c-family-indent-on-newline %[ eval -draft -itersel %[ def -hidden c-family-indent-on-newline %< eval -draft -itersel %<
exec \; exec \;
try %[ try %<
# if previous line closed a paren, copy indent of the opening paren line # if previous line closed a paren, copy indent of the opening paren line
exec -draft k<a-x> 1s(\))(\h+\w+)*\h*(\;\h*)?$<ret> m<a-\;>J s\`|.\'<ret> 1<a-&> exec -draft k<a-x> 1s(\))(\h+\w+)*\h*(\;\h*)?$<ret> m<a-\;>J s\`|.\'<ret> 1<a-&>
] catch %[ > catch %<
# else indent new lines with the same level as the previous one # else indent new lines with the same level as the previous one
exec -draft K <a-&> exec -draft K <a-&>
] >
# remove previous empty lines resulting from the automatic indent # remove previous empty lines resulting from the automatic indent
try %[ exec -draft k <a-x> <a-k>^\h+$<ret> Hd ] try %< exec -draft k <a-x> <a-k>^\h+$<ret> Hd >
# indent after an opening brace # indent after an opening brace
try %[ exec -draft k <a-x> s\{\h*$<ret> j <a-gt> ] try %< exec -draft k <a-x> s\{\h*$<ret> j <a-gt> >
# indent after a label # indent after a label
try %[ exec -draft k <a-x> s[a-zA-Z0-9_-]+:\h*$<ret> j <a-gt> ] try %< exec -draft k <a-x> s[a-zA-Z0-9_-]+:\h*$<ret> j <a-gt> >
# indent after a statement not followed by an opening brace # indent after a statement not followed by an opening brace
try %[ exec -draft k <a-x> <a-k>\b(if|else|for|while)\h*\(.+?\)\h*$<ret> j <a-gt> ] try %< exec -draft k <a-x> <a-k>\b(if|else|for|while)\h*\(.+?\)\h*$<ret> j <a-gt> >
# align to the opening parenthesis on a previous line if its followed by text on the same line # align to the opening parenthesis or opening bracket (whichever is first)
try %[ exec -draft {b <a-k>\`\([^\n]+\n[^\n]*\n?\'<ret> L s\`|.\'<ret> & ] # on a previous line if its followed by text on the same line
] ] try %< exec -draft [b Z<a-\;>[B<a-z><gt> <a-k>\`[{(][^\n]+\n[^\n]*\n?\'<ret> L s\`|.\'<ret> & >
> >
def -hidden c-family-indent-on-opening-curly-brace %[ def -hidden c-family-indent-on-opening-curly-brace %[
# align indent with opening paren when { is entered on a new line after the closing paren # align indent with opening paren when { is entered on a new line after the closing paren

View File

@ -0,0 +1 @@
c<ret><esc>

View File

@ -0,0 +1 @@
MyObject obj{param1,%( )param2};

View File

@ -0,0 +1,2 @@
MyObject obj{param1,
param2};

View File

@ -0,0 +1,3 @@
source "%val{runtime}/colors/default.kak"
source "%val{runtime}/rc/core/c-family.kak"
set buffer filetype cpp

View File

@ -0,0 +1 @@
c<ret>qux<esc>

View File

@ -0,0 +1,3 @@
foo{bar(baz,%( )
foo(bar{baz,%( )

View File

@ -0,0 +1,5 @@
foo{bar(baz,
qux
foo(bar{baz,
qux

View File

@ -0,0 +1,3 @@
source "%val{runtime}/colors/default.kak"
source "%val{runtime}/rc/core/c-family.kak"
set buffer filetype cpp