diff --git a/rc/filetype/ruby.kak b/rc/filetype/ruby.kak index 5c974580..6fbe951a 100644 --- a/rc/filetype/ruby.kak +++ b/rc/filetype/ruby.kak @@ -150,10 +150,10 @@ define-command -hidden ruby-trim-indent %{ define-command -hidden ruby-indent-on-char %{ evaluate-commands -no-hooks -draft -itersel %{ # align middle and end structures to start - try %{ execute-keys -draft ^ \h * (else|elsif) $ ^ \h * (if) s \A | \z ) } - try %{ execute-keys -draft ^ \h * (when) $ ^ \h * (case) s \A | \z ) } - try %{ execute-keys -draft ^ \h * (rescue) $ ^ \h * (begin) s \A | \z ) } - try %{ execute-keys -draft ^ \h * (end) $ ^ \h * (begin|case|class|def|for|if|module|unless|until|while) s \A | \z ) } + try %{ execute-keys -draft ^ \h * (else|elsif) $ i ^ \h * (if) 1 } + try %{ execute-keys -draft ^ \h * (else|when) $ i ^ \h * (case) 1 } + try %{ execute-keys -draft ^ \h * (rescue) $ i ^ \h * (begin|def) 1 } + try %{ execute-keys -draft ^ \h * (end) $ i ^ \h * (begin|case|class|def|for|if|module|unless|until|while) 1 } } } @@ -180,7 +180,7 @@ define-command -hidden ruby-insert-on-new-line %[ # Check if previous line opens a block execute-keys -draft k ^x(begin|case|class|def|for|if|module|unless|until|while|.+\bdo$|.+\bdo\h\|.+(?=\|))[^0-9A-Za-z_!?] # Check that we do not already have an end for this indent level which is first set via `ruby-indent-on-new-line` hook - execute-keys -draft }i J ^x(end|else|elsif|rescue)[^0-9A-Za-z_!?] + execute-keys -draft }i J ^x(end|else|elsif|rescue|when)[^0-9A-Za-z_!?] ] execute-keys -draft oxend # insert a new line with containing end ]