Merge remote-tracking branch 'eraserhd/lisp-indent'
This commit is contained in:
commit
2e0b58a43f
|
@ -158,7 +158,32 @@ evaluate-commands %sh{
|
||||||
# ‾‾‾‾‾‾‾‾
|
# ‾‾‾‾‾‾‾‾
|
||||||
|
|
||||||
define-command -hidden clojure-filter-around-selections lisp-filter-around-selections
|
define-command -hidden clojure-filter-around-selections lisp-filter-around-selections
|
||||||
define-command -hidden clojure-indent-on-new-line lisp-indent-on-new-line
|
|
||||||
|
declare-option \
|
||||||
|
-docstring 'regex matching the head of forms which have options *and* indented bodies' \
|
||||||
|
regex clojure_special_indent_forms \
|
||||||
|
'(?:def.*|doseq|for|fn\*?|if(-.*|)|let.*|loop|ns|testing|with-.*|when(-.*|))'
|
||||||
|
|
||||||
|
define-command -hidden clojure-indent-on-new-line %{
|
||||||
|
# registers: i = best align point so far; w = start of first word of form
|
||||||
|
evaluate-commands -draft -save-regs '/"|^@iw' -itersel %{
|
||||||
|
execute-keys -draft 'gk"iZ'
|
||||||
|
try %{
|
||||||
|
execute-keys -draft '[bl"i<a-Z><gt>"wZ'
|
||||||
|
|
||||||
|
try %{
|
||||||
|
# If a special form, indent another space
|
||||||
|
execute-keys -draft '"wze<a-k>\A' %opt{clojure_special_indent_forms} '\z<ret><a-L>s.\K.*<ret><a-;>;"i<a-Z><gt>'
|
||||||
|
} catch %{
|
||||||
|
# If not special and parameter appears on line 1, indent to parameter
|
||||||
|
execute-keys -draft '"wze<a-l>s\h\K[^\s].*<ret><a-;>;"i<a-Z><gt>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try %{ execute-keys -draft '[rl"i<a-Z><gt>' }
|
||||||
|
try %{ execute-keys -draft '[Bl"i<a-Z><gt>' }
|
||||||
|
execute-keys -draft '"i<a-z>a&<space>'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Initialization
|
# Initialization
|
||||||
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾
|
||||||
|
|
|
@ -31,12 +31,26 @@ define-command -hidden lisp-filter-around-selections %{
|
||||||
try %{ execute-keys -draft -itersel <a-x> s \h+$ <ret> d }
|
try %{ execute-keys -draft -itersel <a-x> s \h+$ <ret> d }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
declare-option \
|
||||||
|
-docstring 'regex matching the head of forms which have options *and* indented bodies' \
|
||||||
|
regex lisp_special_indent_forms \
|
||||||
|
'(?:def.*|if(-.*|)|let.*|lambda|with-.*|when(-.*|))'
|
||||||
|
|
||||||
define-command -hidden lisp-indent-on-new-line %{
|
define-command -hidden lisp-indent-on-new-line %{
|
||||||
evaluate-commands -draft -itersel %{
|
# registers: i = best align point so far; w = start of first word of form
|
||||||
# preserve previous line indent
|
evaluate-commands -draft -save-regs '/"|^@iw' -itersel %{
|
||||||
try %{ execute-keys -draft \; K <a-&> }
|
execute-keys -draft 'gk"iZ'
|
||||||
# indent when matches opening paren
|
try %{
|
||||||
try %{ execute-keys -draft [( <a-k> \A\([^\n]+\n[^\n]*\n?\z <ret> <a-\;> \; <a-gt> }
|
execute-keys -draft '[bl"i<a-Z><gt>"wZ'
|
||||||
|
|
||||||
|
try %{ execute-keys -draft '"wz<a-l>s.\K.*<ret><a-;>;"i<a-Z><gt>' }
|
||||||
|
|
||||||
|
# If not "special" form and parameter appears on line 1, indent to parameter
|
||||||
|
execute-keys -draft '"wze<a-K>\A' %opt{lisp_special_indent_forms} '\z<ret>' '<a-l>s\h\K[^\s].*<ret><a-;>;"i<a-Z><gt>'
|
||||||
|
}
|
||||||
|
try %{ execute-keys -draft '[rl"i<a-Z><gt>' }
|
||||||
|
try %{ execute-keys -draft '[Bl"i<a-Z><gt>' }
|
||||||
|
execute-keys -draft '"i<a-z>a&<space>'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user