diff options
| author | Maxime Coste <mawww@kakoune.org> | 2020-07-30 21:14:37 +1000 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2020-07-30 21:14:37 +1000 |
| commit | 55fbdb3606a802c5de30dfd41f196bc18ead85cf (patch) | |
| tree | fd6886acce862004dcb526745a1d0e0f46d92352 /rc | |
| parent | b322a1f29c4ff35d8a2177f46ef6580c4c5431b0 (diff) | |
| parent | 6258646f412159259b98d80f22b80be54f63dcca (diff) | |
Merge remote-tracking branch 'johnisom/deindent-closing-braces'
Diffstat (limited to 'rc')
| -rw-r--r-- | rc/filetype/awk.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/c-family.kak | 4 | ||||
| -rw-r--r-- | rc/filetype/cabal.kak | 6 | ||||
| -rw-r--r-- | rc/filetype/css.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/cue.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/d.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/dart.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/gluon.kak | 20 | ||||
| -rw-r--r-- | rc/filetype/go.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/java.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/javascript.kak | 4 | ||||
| -rw-r--r-- | rc/filetype/json.kak | 8 | ||||
| -rw-r--r-- | rc/filetype/kakrc.kak | 12 | ||||
| -rw-r--r-- | rc/filetype/latex.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/nix.kak | 4 | ||||
| -rw-r--r-- | rc/filetype/perl.kak | 6 | ||||
| -rw-r--r-- | rc/filetype/php.kak | 8 | ||||
| -rw-r--r-- | rc/filetype/protobuf.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/python.kak | 14 | ||||
| -rw-r--r-- | rc/filetype/ragel.kak | 6 | ||||
| -rw-r--r-- | rc/filetype/rust.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/sass.kak | 26 | ||||
| -rw-r--r-- | rc/filetype/scala.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/sh.kak | 2 | ||||
| -rw-r--r-- | rc/filetype/zig.kak | 2 |
25 files changed, 100 insertions, 44 deletions
diff --git a/rc/filetype/awk.kak b/rc/filetype/awk.kak index 663174b7..85ec591a 100644 --- a/rc/filetype/awk.kak +++ b/rc/filetype/awk.kak @@ -76,6 +76,8 @@ define-command -hidden awk-indent-on-new-line %[ try %[ execute-keys -draft k <a-x> s \h+$ <ret> d ] # indent after line ending in opening curly brace try %[ execute-keys -draft k<a-x> <a-k>\{\h*(#.*)?$<ret> j<a-gt> ] + # deindent closing brace when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] ] ] diff --git a/rc/filetype/c-family.kak b/rc/filetype/c-family.kak index b4a993eb..4f056857 100644 --- a/rc/filetype/c-family.kak +++ b/rc/filetype/c-family.kak @@ -83,7 +83,7 @@ define-command -hidden c-family-indent-on-newline %< evaluate-commands -draft -i # remove previous empty lines resulting from the automatic indent try %< execute-keys -draft k <a-x> <a-k>^\h+$<ret> Hd > # indent after an opening brace or parenthesis at end of line - try %< execute-keys -draft k <a-x> s[{(]\h*$<ret> j <a-gt> > + try %< execute-keys -draft k <a-x> <a-k>[{(]\h*$<ret> j <a-gt> > # indent after a label 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 @@ -98,6 +98,8 @@ define-command -hidden c-family-indent-on-newline %< evaluate-commands -draft -i try %< execute-keys -draft K <a-x> <a-k>\;\h*(//[^\n]+)?$<ret> \ K <a-x> s \belse\b\h*(?://[^\n]+)?\n([^\n]*\n){2}\z<ret> \ <a-S>1<a-&> > + # deindent closing brace(s) when after cursor + try %< execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <esc> m <a-S> 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/rc/filetype/cabal.kak b/rc/filetype/cabal.kak index 77519954..cb95d2d9 100644 --- a/rc/filetype/cabal.kak +++ b/rc/filetype/cabal.kak @@ -52,14 +52,16 @@ define-command -hidden cabal-trim-indent %{ define-command -hidden cabal-indent-on-new-line %[ evaluate-commands -draft -itersel %[ - # copy '#' comment prefix and following white spaces - try %[ execute-keys -draft k <a-x> s ^\h*\K#\h* <ret> y gh j P ] + # copy '--' comment prefix and following white spaces + try %[ execute-keys -draft k <a-x> s ^\h*\K--\h* <ret> y gh j P ] # preserve previous line indent try %[ execute-keys -draft <semicolon> K <a-&> ] # filter previous line try %[ execute-keys -draft k : cabal-trim-indent <ret> ] # indent after lines ending with { or : try %[ execute-keys -draft <space> k <a-x> <a-k> [:{]$ <ret> j <a-gt> ] + # deindent closing brace when after cursor + try %[ execute-keys -draft <a-x> <a-k> \h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] ] ] diff --git a/rc/filetype/css.kak b/rc/filetype/css.kak index 8825c84e..7f6f7866 100644 --- a/rc/filetype/css.kak +++ b/rc/filetype/css.kak @@ -71,6 +71,8 @@ define-command -hidden css-indent-on-new-line %[ try %[ execute-keys -draft k : css-trim-indent <ret> ] # indent after lines ending with with { try %[ execute-keys -draft k <a-x> <a-k> \{$ <ret> j <a-gt> ] + # deindent closing brace when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] ] ] diff --git a/rc/filetype/cue.kak b/rc/filetype/cue.kak index a2fbb0c7..ab46059e 100644 --- a/rc/filetype/cue.kak +++ b/rc/filetype/cue.kak @@ -136,6 +136,8 @@ define-command -hidden cue-indent-on-new-line %~ try %[ execute-keys -draft k <a-x> <a-k> [{(]\h*$ <ret> j <a-gt> ] # indent after lines ending with [{(].+ and move first parameter to own line try %< execute-keys -draft [c[({],[)}] <ret> <a-k> \A[({][^\n]+\n[^\n]*\n?\z <ret> L i<ret><esc> <gt> <a-S> <a-&> > + # deindent closing brace(s) when after cursor + try %< execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> > | # filter previous line try %{ execute-keys -draft k : cue-trim-indent <ret> } diff --git a/rc/filetype/d.kak b/rc/filetype/d.kak index 18e547d5..73db7e52 100644 --- a/rc/filetype/d.kak +++ b/rc/filetype/d.kak @@ -121,6 +121,8 @@ define-command -hidden d-indent-on-new-line %~ try %[ execute-keys -draft k<a-x> <a-k> ^\h*(case|default).*:$ <ret> j<a-gt> ] # indent after if|else|while|for try %[ execute-keys -draft <semicolon><a-F>)MB <a-k> \A(if|else|while|for)\h*\(.*\)\h*\n\h*\n?\z <ret> s \A|.\z <ret> 1<a-&>1<a-space><a-gt> ] + # deindent closing brace(s) when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> ] = ~ diff --git a/rc/filetype/dart.kak b/rc/filetype/dart.kak index 541c1e58..2a07eafc 100644 --- a/rc/filetype/dart.kak +++ b/rc/filetype/dart.kak @@ -97,6 +97,8 @@ define-command -hidden dart-indent-on-new-line %~ try %[ execute-keys -draft k<a-x> <a-k> ^\h*(case|default).*:$ <ret> j<a-gt> ] # indent after if|else|while|for try %[ execute-keys -draft <semicolon><a-F>)MB <a-k> \A(if|else|while|for)\h*\(.*\)\h*\n\h*\n?\z <ret> s \A|.\z <ret> 1<a-&>1<a-space><a-gt> ] + # deindent closing brace when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] = ~ diff --git a/rc/filetype/gluon.kak b/rc/filetype/gluon.kak index 2298737c..d2e23644 100644 --- a/rc/filetype/gluon.kak +++ b/rc/filetype/gluon.kak @@ -31,7 +31,7 @@ hook -group gluon-highlight global WinSetOption filetype=gluon %{ } -provide-module gluon %[ +provide-module gluon %§ # Highlighters # ‾‾‾‾‾‾‾‾‾‾‾‾ @@ -78,8 +78,8 @@ define-command -hidden gluon-trim-indent %{ try %{ execute-keys -draft -itersel <a-x> s \h+$ <ret> d } } -define-command -hidden gluon-indent-on-new-line %{ - evaluate-commands -draft -itersel %{ +define-command -hidden gluon-indent-on-new-line %~ + evaluate-commands -draft -itersel %_ # copy // and /// comments prefix and following white spaces try %{ execute-keys -draft k <a-x> s ^\h*\K///?\h* <ret> y gh j P } # preserve previous line indent @@ -88,12 +88,10 @@ define-command -hidden gluon-indent-on-new-line %{ try %{ execute-keys -draft k : gluon-trim-indent <ret> } # indent after lines ending with (open) braces, =, ->, condition, rec, # or in - try %{ - execute-keys -draft \ - \; k x <a-k> (\(|\{|\[|=|->|then|else|rec|in)$ <ret> j <a-gt> - # balance out brackets } ] - } - } -} + try %{ execute-keys -draft \; k x <a-k> (\(|\{|\[|=|->|then|else|rec|in)$ <ret> j <a-gt> } + # deindent closing brace(s) when after cursor + try %< execute-keys -draft <a-x> <a-k> ^\h*[})\]] <ret> gh / \})\]] <ret> m <a-S> 1<a-&> > + _ +~ -] +§ diff --git a/rc/filetype/go.kak b/rc/filetype/go.kak index 69ce6c27..5d077991 100644 --- a/rc/filetype/go.kak +++ b/rc/filetype/go.kak @@ -89,6 +89,8 @@ define-command -hidden go-indent-on-new-line %~ try %[ execute-keys -draft k<a-x> <a-k> ^\h*(case|default).*:$ <ret> j<a-gt> ] # indent after if|else|while|for try %[ execute-keys -draft <semicolon><a-F>)MB <a-k> \A(if|else|while|for)\h*\(.*\)\h*\n\h*\n?\z <ret> s \A|.\z <ret> 1<a-&>1<a-space><a-gt> ] + # deindent closing brace(s) when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> ] = ~ diff --git a/rc/filetype/java.kak b/rc/filetype/java.kak index f6a77f82..12cb99a3 100644 --- a/rc/filetype/java.kak +++ b/rc/filetype/java.kak @@ -56,6 +56,8 @@ define-command -hidden java-indent-on-new-line %~ try %[ execute-keys -draft k<a-x> <a-k> ^\h*(case|default).*:$ <ret> j<a-gt> ] # indent after keywords try %[ execute-keys -draft <semicolon><a-F>)MB <a-k> \A(if|else|while|for|try|catch)\h*\(.*\)\h*\n\h*\n?\z <ret> s \A|.\z <ret> 1<a-&>1<a-space><a-gt> ] + # deindent closing brace(s) when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> ] = ~ diff --git a/rc/filetype/javascript.kak b/rc/filetype/javascript.kak index 191ae95d..fdac14af 100644 --- a/rc/filetype/javascript.kak +++ b/rc/filetype/javascript.kak @@ -61,7 +61,9 @@ define-command -hidden javascript-indent-on-new-line %< # filter previous line try %{ execute-keys -draft k : javascript-trim-indent <ret> } # indent after lines beginning / ending with opener token - try %_ execute-keys -draft k <a-x> <a-k> ^\h*[[{]|[[{]$ <ret> j <a-gt> _ + try %_ execute-keys -draft k <a-x> s [[({] <ret> <space> <a-l> <a-K> [\])}] <ret> j <a-gt> _ + # deindent closing token(s) when after cursor + try %_ execute-keys -draft <a-x> <a-k> ^\h*[})\]] <ret> gh / [})\]] <ret> m <a-S> 1<a-&> _ > > diff --git a/rc/filetype/json.kak b/rc/filetype/json.kak index 2f798b6f..67f0506c 100644 --- a/rc/filetype/json.kak +++ b/rc/filetype/json.kak @@ -49,7 +49,7 @@ define-command -hidden json-trim-indent %{ define-command -hidden json-indent-on-char %< evaluate-commands -draft -itersel %< # align closer token to its opener when alone on a line - try %< execute-keys -draft <a-h> <a-k> ^\h+[]}]$ <ret> m s \A|.\z <ret> 1<a-&> > + try %< execute-keys -draft <a-h> <a-k> ^\h+[\]}]$ <ret> m <a-S> 1<a-&> > > > @@ -59,8 +59,10 @@ define-command -hidden json-indent-on-new-line %< try %{ execute-keys -draft <semicolon> K <a-&> } # filter previous line try %{ execute-keys -draft k : json-trim-indent <ret> } - # indent after lines beginning with opener token - try %< execute-keys -draft k <a-x> <a-k> ^\h*[[{] <ret> j <a-gt> > + # indent after lines ending with opener token + try %< execute-keys -draft k <a-x> <a-k> [[{]\h*$ <ret> j <a-gt> > + # deindent closer token(s) when after cursor + try %< execute-keys -draft <a-x> <a-k> ^\h*[}\]] <ret> gh / [}\]] <ret> m <a-S> 1<a-&> > > > diff --git a/rc/filetype/kakrc.kak b/rc/filetype/kakrc.kak index 2a2f505f..bf59cdbf 100644 --- a/rc/filetype/kakrc.kak +++ b/rc/filetype/kakrc.kak @@ -90,8 +90,8 @@ add-highlighter shared/kakrc/single_string/escape regex "''" 0:default+b # Commands # ‾‾‾‾‾‾‾‾ -define-command -hidden kak-indent-on-new-line %{ - evaluate-commands -draft -itersel %{ +define-command -hidden kak-indent-on-new-line %~ + evaluate-commands -draft -itersel %= # copy '#' comment prefix and following white spaces try %{ execute-keys -draft k <a-x> s ^\h*#\h* <ret> y jgh P } # preserve previous line indent @@ -100,8 +100,12 @@ define-command -hidden kak-indent-on-new-line %{ try %{ execute-keys -draft k <a-x> s \h+$ <ret> d } # indent after line ending with %\w*[^\s\w] try %{ execute-keys -draft k <a-x> <a-k> \%\w*[^\s\w]$ <ret> j <a-gt> } - } -} + # deindent closing brace when after cursor + try %_ execute-keys -draft -itersel <a-x> <a-k> ^\h*([>)}\]]) <ret> gh / <c-r>1 <ret> m <a-S> 1<a-&> _ + # deindent closing char(s) + try %{ execute-keys -draft -itersel <a-x> <a-k> ^\h*([^\s\w]) <ret> gh / <c-r>1 <ret> <a-?> <c-r>1 <ret> <a-T>% <a-k> \w*<c-r>1$ <ret> <a-S> 1<a-&> } + = +~ define-command -hidden kak-indent-on-closing-matching %~ # align to opening matching brace when alone on a line diff --git a/rc/filetype/latex.kak b/rc/filetype/latex.kak index af336f68..a872ad14 100644 --- a/rc/filetype/latex.kak +++ b/rc/filetype/latex.kak @@ -68,6 +68,8 @@ define-command -hidden latex-indent-newline %( try %{ execute-keys -draft k<a-x> s\h+$<ret> d } # indent after line ending with { try %( execute-keys -draft k<a-x> <a-k>\{$<ret> j<a-gt> ) + # deindent closing brace(s) when after cursor + try %( execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ) # indent after line ending with \begin{...}[...]{...}, with multiple # sets of arguments possible try %( diff --git a/rc/filetype/nix.kak b/rc/filetype/nix.kak index 36137552..091204e9 100644 --- a/rc/filetype/nix.kak +++ b/rc/filetype/nix.kak @@ -95,7 +95,7 @@ define-command -hidden nix-trim-indent %{ define-command -hidden nix-indent-on-char %< evaluate-commands -draft -itersel %< # align closer token to its opener when alone on a line - try %/ execute-keys -draft <a-h> <a-k> ^\h+[]}]$ <ret> m s \A|.\z <ret> 1<a-&> / + try %/ execute-keys -draft <a-h> <a-k> ^\h+[\]}]$ <ret> m s \A|.\z <ret> 1<a-&> / > > @@ -109,6 +109,8 @@ define-command -hidden nix-indent-on-new-line %< try %{ execute-keys -draft k : nix-trim-indent <ret> } # indent after lines beginning / ending with opener token try %_ execute-keys -draft k <a-x> <a-k> ^\h*[[{]|[[{]$ <ret> j <a-gt> _ + # deindent closer token(s) when after cursor + try %_ execute-keys -draft <a-x> <a-k> ^\h*[}\]] <ret> gh / [}\]] <ret> m <a-S> 1<a-&> _ > > diff --git a/rc/filetype/perl.kak b/rc/filetype/perl.kak index a2da7cf9..348b4cd3 100644 --- a/rc/filetype/perl.kak +++ b/rc/filetype/perl.kak @@ -111,12 +111,14 @@ define-command -hidden perl-indent-on-new-line %~ try %{ execute-keys -draft k<a-x> s \h+$ <ret>d } # align to opening paren of previous line try %{ execute-keys -draft [( <a-k> \A\([^\n]+\n[^\n]*\n?\z <ret> s \A\(\h*.|.\z <ret> '<a-;>' & } - # copy // comments prefix - try %{ execute-keys -draft <semicolon><c-s>k<a-x> s ^\h*\K/{2,} <ret> y<c-o>P<esc> } + # copy # comments prefix + try %{ execute-keys -draft <semicolon><c-s>k<a-x> s ^\h*\K# <ret> y<c-o>P<esc> } # indent after a switch's case/default statements try %[ execute-keys -draft k<a-x> <a-k> ^\h*(case|default).*:$ <ret> j<a-gt> ] # indent after if|else|while|for try %[ execute-keys -draft <semicolon><a-F>)MB <a-k> \A(if|else|while|for)\h*\(.*\)\h*\n\h*\n?\z <ret> s \A|.\z <ret> 1<a-&>1<a-space><a-gt> ] + # deindent closing brace(s) when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> ] = ~ diff --git a/rc/filetype/php.kak b/rc/filetype/php.kak index e296b4fa..770a4b60 100644 --- a/rc/filetype/php.kak +++ b/rc/filetype/php.kak @@ -23,7 +23,7 @@ hook -group php-highlight global WinSetOption filetype=php %{ hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/php-file } } -provide-module php %( +provide-module php %§ require-module html # Highlighters @@ -77,7 +77,7 @@ define-command -hidden php-trim-indent %{ define-command -hidden php-indent-on-char %< evaluate-commands -draft -itersel %< # align closer token to its opener when alone on a line - try %/ execute-keys -draft <a-h> <a-k> ^\h+[]}]$ <ret> m s \A|.\z <ret> 1<a-&> / + try %/ execute-keys -draft <a-h> <a-k> ^\h+[\]}]$ <ret> m s \A|.\z <ret> 1<a-&> / > > @@ -93,7 +93,9 @@ define-command -hidden php-indent-on-new-line %< try %_ execute-keys -draft k <a-x> <a-k> ^\h*[[{]|[[{]$ <ret> j <a-gt> _ # append " * " on lines starting a multiline /** or /* comment try %{ execute-keys -draft k <a-x> s ^\h*/[*][* ]? <ret> j gi i <space>*<space> } + # deindent closer token(s) when after cursor + try %_ execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> _ > > -) +§ diff --git a/rc/filetype/protobuf.kak b/rc/filetype/protobuf.kak index 2e7d8f97..3d9c9fba 100644 --- a/rc/filetype/protobuf.kak +++ b/rc/filetype/protobuf.kak @@ -76,6 +76,8 @@ define-command -hidden protobuf-indent-on-newline %~ try %{ execute-keys -draft k<a-x> s \h+$ <ret>d } # copy // comments prefix try %{ execute-keys -draft <semicolon><c-s>k<a-x> s ^\h*\K/{2,}(\h*(?=\S))? <ret> y<c-o>P<esc> } + # deindent closing brace(s) when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] ] ~ diff --git a/rc/filetype/python.kak b/rc/filetype/python.kak index bac31e3f..db62c8db 100644 --- a/rc/filetype/python.kak +++ b/rc/filetype/python.kak @@ -28,7 +28,7 @@ hook -group python-highlight global WinSetOption filetype=python %{ hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/python } } -provide-module python %{ +provide-module python %§ # Highlighters & Completion # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ @@ -149,15 +149,17 @@ define-command -hidden python-insert-on-new-line %{ try %{ execute-keys -draft k <a-x> s ^\h*#\h* <ret> y jgh P } } } -define-command -hidden python-indent-on-new-line %{ - evaluate-commands -draft -itersel %{ +define-command -hidden python-indent-on-new-line %< + evaluate-commands -draft -itersel %< # preserve previous line indent try %{ execute-keys -draft <semicolon> K <a-&> } # cleanup trailing whitespaces from previous line try %{ execute-keys -draft k <a-x> s \h+$ <ret> d } # indent after line ending with : try %{ execute-keys -draft <space> k <a-x> <a-k> :$ <ret> j <a-gt> } - } -} + # deindent closing brace/bracket when after cursor (for arrays and dictionaries) + try %[ execute-keys -draft <a-x> <a-k> ^\h*[}\]] <ret> gh / [}\]] <ret> m <a-S> 1<a-&> ] + > +> -} +§ diff --git a/rc/filetype/ragel.kak b/rc/filetype/ragel.kak index 85a79b31..eadcf1f7 100644 --- a/rc/filetype/ragel.kak +++ b/rc/filetype/ragel.kak @@ -55,8 +55,8 @@ define-command -hidden ragel-trim-indent %{ define-command -hidden ragel-indent-on-char %< evaluate-commands -draft -itersel %< # align closer token to its opener when alone on a line - try %< execute-keys -draft <a-h> <a-k> ^\h+[]})]$ <ret> m s \A|.\z <ret> 1<a-&> > - try %< execute-keys -draft <a-h> <a-k> ^\h+ [*]$ <ret> <a-?> [*]$ <ret> s \A|.\z <ret> 1<a-&> > + try %< execute-keys -draft <a-h> <a-k> ^\h+[\]})]$ <ret> m s \A|.\z <ret> 1<a-&> > + try %< execute-keys -draft <a-h> <a-k> ^\h+ [*]$ <ret> <a-?> [*]$ <ret> s \A|.\z <ret> 1<a-&> > > > @@ -70,6 +70,8 @@ define-command -hidden ragel-indent-on-new-line %< try %{ execute-keys -draft k : ragel-trim-indent <ret> } # indent after lines ending with opener token try %< execute-keys -draft k <a-x> <a-k> [[{(*]$ <ret> j <a-gt> > + # align closer token to its opener when after cursor + try %< execute-keys -draft <a-x> <a-k> ^\h*[})\]] <ret> gh / [})\]] <ret> m <a-S> 1<a-&> > > > diff --git a/rc/filetype/rust.kak b/rc/filetype/rust.kak index 24d36f88..049fc444 100644 --- a/rc/filetype/rust.kak +++ b/rc/filetype/rust.kak @@ -112,6 +112,8 @@ define-command -hidden rust-indent-on-new-line %~ try %+ execute-keys -draft k <a-x> <a-k> ^\h*where\h*$ <ret> j <a-gt> + # dedent after lines starting with . and ending with , or ; try %_ execute-keys -draft k <a-x> <a-k> ^\h*\..*[,<semicolon>]\h*$ <ret> j <a-lt> _ + # deindent closing brace(s) when after cursor + try %= execute-keys -draft <a-x> <a-k> ^\h*[})] <ret> gh / [})] <ret> m <a-S> 1<a-&> = # todo dedent additional unmatched parenthesis # try %& execute-keys -draft k <a-x> s \((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*\) l Gl s\) %sh{ # count previous selections length diff --git a/rc/filetype/sass.kak b/rc/filetype/sass.kak index 403a47dd..d3df6300 100644 --- a/rc/filetype/sass.kak +++ b/rc/filetype/sass.kak @@ -11,15 +11,16 @@ hook global BufCreate .*[.](sass) %{ # Initialization # ‾‾‾‾‾‾‾‾‾‾‾‾‾‾ -hook global WinSetOption filetype=sass %{ +hook global WinSetOption filetype=sass %< require-module sass hook window ModeChange pop:insert:.* -group sass-trim-indent sass-trim-indent + hook window InsertChar \} -group sass-indent sass-indent-on-closing-brace hook window InsertChar \n -group sass-indent sass-indent-on-new-line set-option buffer extra_word_chars '_' '-' hook -once -always window WinSetOption filetype=.* %{ remove-hooks window sass-.+ } -} +> hook -group sass-highlight global WinSetOption filetype=sass %{ add-highlighter window/sass ref sass @@ -27,7 +28,7 @@ hook -group sass-highlight global WinSetOption filetype=sass %{ } -provide-module sass %{ +provide-module sass %§ # Highlighters # ‾‾‾‾‾‾‾‾‾‾‾‾ @@ -53,8 +54,15 @@ define-command -hidden sass-trim-indent %{ try %{ execute-keys -draft -itersel <a-x> s \h+$ <ret> d } } -define-command -hidden sass-indent-on-new-line %{ - evaluate-commands -draft -itersel %{ +define-command -hidden sass-indent-on-closing-brace %< + evaluate-commands -draft -itersel %< + # align closing brace to same indentation as the line that the opening brace resides on + try %[ execute-keys -draft <a-h> <a-k> ^\h+\}$ <ret> m <a-S> 1<a-&> ] + > +> + +define-command -hidden sass-indent-on-new-line %< + evaluate-commands -draft -itersel %< # copy '/' comment prefix and following white spaces try %{ execute-keys -draft k <a-x> s ^\h*\K/\h* <ret> y gh j P } # preserve previous line indent @@ -63,7 +71,9 @@ define-command -hidden sass-indent-on-new-line %{ try %{ execute-keys -draft k : sass-trim-indent <ret> } # avoid indent after properties and comments try %{ execute-keys -draft k <a-x> <a-K> [:/] <ret> j <a-gt> } - } -} + # deindent closing brace when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] + > +> -} +§ diff --git a/rc/filetype/scala.kak b/rc/filetype/scala.kak index 29884d20..48dfa937 100644 --- a/rc/filetype/scala.kak +++ b/rc/filetype/scala.kak @@ -69,6 +69,8 @@ define-command -hidden scala-indent-on-new-line %[ try %[ execute-keys -draft k : scala-trim-indent <ret> ] # indent after lines ending with { try %[ execute-keys -draft k <a-x> <a-k> \{$ <ret> j <a-gt> ] + # deindent closing brace when after cursor + try %[ execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> ] ] ] diff --git a/rc/filetype/sh.kak b/rc/filetype/sh.kak index 05cf3016..56511903 100644 --- a/rc/filetype/sh.kak +++ b/rc/filetype/sh.kak @@ -182,6 +182,8 @@ define-command -hidden sh-indent-on-new-line %[ try %= execute-keys -draft <space> k <a-x> <a-k> (\s|^)\{$ <ret> j <a-gt> = # deindent closing } try %= execute-keys -draft <space> k <a-x> <a-k> ^\s*\}$ <ret> <a-lt> j K <a-&> = + # deindent closing } when after cursor + try %= execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> = ] ] diff --git a/rc/filetype/zig.kak b/rc/filetype/zig.kak index 2f0e5d55..c70a14c9 100644 --- a/rc/filetype/zig.kak +++ b/rc/filetype/zig.kak @@ -121,6 +121,8 @@ define-command -hidden zig-indent-on-new-line %< try %< execute-keys -draft <semicolon> K <a-&> > # indent after lines ending in { try %< execute-keys -draft k <a-x> <a-k> \{\h*$ <ret> j <a-gt> > + # deindent closing } when after cursor + try %< execute-keys -draft <a-x> <a-k> ^\h*\} <ret> gh / \} <ret> m <a-S> 1<a-&> > > # filter previous line try %< execute-keys -draft k : zig-trim-indent <ret> > |
