Merge remote-tracking branch 'krobelus/consistent-trim-indent'

This commit is contained in:
Maxime Coste 2022-06-04 10:57:11 +10:00
commit 34e1f3cc1b
41 changed files with 184 additions and 99 deletions

View File

@ -11,6 +11,7 @@ hook global BufCreate .*\.v %{
hook global WinSetOption filetype=coq %{
require-module coq
hook window ModeChange pop:insert:.* -group coq-trim-indent coq-trim-indent
hook window InsertChar \n -group coq-indent coq-copy-indent-on-newline
set-option window static_words %opt{coq_static_words}
@ -27,27 +28,27 @@ provide-module coq %{
# Syntax
# ------
# This is a `looks sensible' keyword syntax highlighting, far from being correct.
# Note that only the core language and the proof language is supported,
# the Ltac language is not (for now).
# This is a `looks sensible' keyword syntax highlighting, far from being correct.
# Note that only the core language and the proof language is supported,
# the Ltac language is not (for now).
add-highlighter shared/coq regions
add-highlighter shared/coq regions
add-highlighter shared/coq/comment region -recurse \Q(* \Q(* \Q*) fill comment
add-highlighter shared/coq/string region (?<!")" (?<!")("")*" fill string
add-highlighter shared/coq/comment region -recurse \Q(* \Q(* \Q*) fill comment
add-highlighter shared/coq/string region (?<!")" (?<!")("")*" fill string
add-highlighter shared/coq/command default-region group
add-highlighter shared/coq/command default-region group
# This is not any lexical convention of coq, simply highlighting used to make
# proofs look better, based on how people usually use notations
add-highlighter shared/coq/command/ regex [`!@#$%^&*-=+\\:\;|<>/]+ 0:operator
add-highlighter shared/coq/command/ regex \(dfs\)|\(bfs\) 0:operator
add-highlighter shared/coq/command/ regex [()\[\]{}] 0:operator
# This is not any lexical convention of coq, simply highlighting used to make
# proofs look better, based on how people usually use notations
add-highlighter shared/coq/command/ regex [`!@#$%^&*-=+\\:\;|<>/]+ 0:operator
add-highlighter shared/coq/command/ regex \(dfs\)|\(bfs\) 0:operator
add-highlighter shared/coq/command/ regex [()\[\]{}] 0:operator
# numeral literals
add-highlighter shared/coq/command/ regex [-]?[0-9][0-9_]*(\.[0-9_]+)?([eE][+-][0-9_]+)? 0:value
# numeral literals
add-highlighter shared/coq/command/ regex [-]?[0-9][0-9_]*(\.[0-9_]+)?([eE][+-][0-9_]+)? 0:value
evaluate-commands %sh{
evaluate-commands %sh{
# These are builtin keywords of the Gallina language (without tactics)
keywords="_ IF Prop SProp Set Type as at by cofix discriminated else end exists exists2 fix for"
keywords="${keywords} forall fun if in lazymatch let match multimatch return then using where with"
@ -101,7 +102,7 @@ provide-module coq %{
printf %s "
add-highlighter shared/coq/command/ regex \b(${tactics_regex})\b 0:keyword
"
}
}
# Indentation
# -----------
@ -109,10 +110,18 @@ provide-module coq %{
# not based on explicit, unique delimiters, like braces in C-family.
# So it is difficult to properly indent using only regex...
# Hence here only a simple mechanism of copying indent is done.
define-command -hidden coq-copy-indent-on-newline %{
define-command -hidden coq-copy-indent-on-newline %{
evaluate-commands -draft -itersel %{
try %{ execute-keys -draft k <a-x> s ^\h+ <ret> y gh j P }
}
}
define-command -hidden coq-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
}

View File

@ -17,6 +17,7 @@ hook global WinSetOption filetype=crystal %{
add-highlighter window/crystal ref crystal
evaluate-commands set-option window static_words %opt{crystal_keywords} %opt{crystal_attributes} %opt{crystal_objects}
hook window ModeChange pop:insert:.* -group crystal-trim-indent crystal-trim-indent
hook window InsertChar .* -group crystal-indent crystal-indent-on-char
hook window InsertChar '\n' -group crystal-indent crystal-indent-on-new-line
hook window InsertChar '\n' -group crystal-insert crystal-insert-on-new-line
@ -206,7 +207,7 @@ define-command -hidden crystal-indent-on-new-line %{
# Copy previous line indent
try %{ execute-keys -draft K <a-&> }
# Remove previous line's trailing spaces
try %{ execute-keys -draft k :ruby-trim-indent <ret> }
try %{ execute-keys -draft k :crystal-trim-indent <ret> }
# Indent after start structure/opening statement
try %{ execute-keys -draft k <a-x> <a-k> ^\h*(?:begin|case|class|def|else|elsif|ensure|for|if|module|rescue|unless|until|when|while|.+\bdo$|.+\bdo\h\|.+(?=\|))[^0-9A-Za-z_!?] <ret> j <a-gt> }
}

View File

@ -7,6 +7,7 @@ hook global BufCreate .*\.elv %{
hook global WinSetOption filetype=elvish %<
require-module elvish
hook window ModeChange pop:insert:.* -group elvish-trim-indent elvish-trim-indent
hook window InsertChar \n -group elvish-insert elvish-indent
hook window InsertChar [\]})] -group elvish-insert elvish-deindent
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window elvish-.+ }
@ -36,6 +37,14 @@ add-highlighter shared/elvish/code/keyword_block regex \}\h+(elif|else|except|fi
add-highlighter shared/elvish/code/metachar regex [*?|&\;<>()[\]{}] 0:operator
define-command -hidden elvish-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden elvish-indent %< evaluate-commands -draft -itersel %<
execute-keys <semicolon>
try %<

View File

@ -14,6 +14,7 @@ hook global BufCreate .*[.](fish) %{
hook global WinSetOption filetype=fish %{
require-module fish
hook window ModeChange pop:insert:.* -group fish-trim-indent fish-trim-indent
hook window InsertChar .* -group fish-indent fish-indent-on-char
hook window InsertChar \n -group fish-insert fish-insert-on-new-line
hook window InsertChar \n -group fish-indent fish-indent-on-new-line

View File

@ -15,6 +15,7 @@ hook global WinSetOption filetype=fsharp %{
require-module fsharp
# indent on newline
hook window ModeChange pop:insert:.* -group fsharp-trim-indent fsharp-trim-indent
hook window InsertChar \n -group fsharp-insert fsharp-insert-on-new-line
hook window InsertChar \n -group fsharp-indent fsharp-indent-on-new-line
@ -125,6 +126,14 @@ add-highlighter shared/fsharp/code/ regex "\B(\(\))\B" 0:value
# Commands
# ‾‾‾‾‾‾‾‾
define-command -hidden fsharp-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden fsharp-insert-on-new-line %{
evaluate-commands -draft -itersel %{
# copy // comments prefix and following white spaces

View File

@ -7,6 +7,7 @@ hook global BufCreate .*\.(s|S|asm)$ %{
hook global WinSetOption filetype=gas %{
require-module gas
hook window ModeChange pop:insert:.* -group gas-trim-indent gas-trim-indent
hook window InsertChar \n -group gas-indent gas-indent-on-new-line
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window gas-.+ }
}

View File

@ -8,6 +8,7 @@ hook global BufCreate .*/?[jJ]ustfile %{
hook global WinSetOption filetype=justfile %{
require-module justfile
hook window ModeChange pop:insert:.* -group justfile-trim-indent justfile-trim-indent
hook window InsertChar \n -group justfile-indent just-indent-on-new-line
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window justfile-.+ }
}
@ -23,6 +24,14 @@ provide-module justfile %{
# Indentation
# ‾‾‾‾‾‾‾‾‾‾‾
define-command -hidden justfile-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden just-indent-on-new-line %{
evaluate-commands -draft -itersel %{
# preserve previous line indent

View File

@ -13,6 +13,7 @@ hook global WinSetOption filetype=makefile %{
set-option window static_words %opt{makefile_static_words}
hook window ModeChange pop:insert:.* -group makefile-trim-indent makefile-trim-indent
hook window InsertChar \n -group makefile-indent makefile-indent-on-new-line
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window makefile-.+ }
}
@ -50,6 +51,14 @@ evaluate-commands %sh{
# Commands
# ‾‾‾‾‾‾‾‾
define-command -hidden makefile-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden makefile-indent-on-new-line %{
evaluate-commands -draft -itersel %{
# preserve previous line indent

View File

@ -14,6 +14,7 @@ hook global BufCreate .*[.](markdown|md|mkd) %{
hook global WinSetOption filetype=markdown %{
require-module markdown
hook window ModeChange pop:insert:.* -group markdown-trim-indent markdown-trim-indent
hook window InsertChar \n -group markdown-insert markdown-insert-on-new-line
hook window InsertChar \n -group markdown-indent markdown-indent-on-new-line
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window markdown-.+ }
@ -99,6 +100,14 @@ add-highlighter shared/markdown/inline/text/ regex "\H( {2,})$" 1:+r@meta
# Commands
# ‾‾‾‾‾‾‾‾
define-command -hidden markdown-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden markdown-insert-on-new-line %{
try %{ execute-keys -draft -itersel k <a-x> s ^\h*\K((>\h*)+([*+-]\h)?|(>\h*)*[*+-]\h)\h* <ret> y gh j P }
}

View File

@ -14,6 +14,7 @@ hook global BufCreate .*\.(lpr|lfm)$ %{
hook global WinSetOption filetype=((free|object)?pascal|delphi) %[
require-module pascal
hook window ModeChange pop:insert:.* -group pascal-trim-indent pascal-trim-indent
hook window InsertChar \n -group pascal-indent pascal-indent-on-new-line
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window pascal-.+ }
set-option window static_words %opt{static_words}
@ -189,6 +190,14 @@ EOF
done
define-command -hidden pascal-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden pascal-indent-on-new-line %{
evaluate-commands -no-hooks -draft -itersel %{
# preserve previous line indent

View File

@ -15,6 +15,7 @@ hook global WinSetOption filetype=protobuf %[
set-option window static_words %opt{protobuf_static_words}
hook window ModeChange pop:insert:.* -group protobuf-trim-indent protobuf-trim-indent
hook -group protobuf-indent window InsertChar \n protobuf-indent-on-newline
hook -group protobuf-indent window InsertChar \{ protobuf-indent-on-opening-curly-brace
hook -group protobuf-indent window InsertChar \} protobuf-indent-on-closing-curly-brace
@ -66,6 +67,14 @@ evaluate-commands %sh{
# Commands
# ‾‾‾‾‾‾‾‾
define-command -hidden protobuf-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden protobuf-indent-on-newline %~
evaluate-commands -draft -itersel %[
# preserve previous line indent

View File

@ -16,6 +16,7 @@ hook global WinSetOption filetype=ruby %{
set-option window static_words %opt{ruby_static_words}
hook window ModeChange pop:insert:.* -group ruby-trim-indent ruby-trim-indent
hook window InsertChar .* -group ruby-indent ruby-indent-on-char
hook window InsertChar \n -group ruby-indent ruby-indent-on-new-line
hook window InsertChar \n -group ruby-insert ruby-insert-on-new-line

View File

@ -14,6 +14,7 @@ hook global BufCreate .*\.taskpaper %{
hook global WinSetOption filetype=taskpaper %{
require-module taskpaper
hook window ModeChange pop:insert:.* -group taskpaper-trim-indent taskpaper-trim-indent
hook window InsertChar \n -group taskpaper-indent taskpaper-indent-on-new-line
hook -once -always window WinSetOption filetype=.* %{ remove-hooks window taskpaper-.+ }
}
@ -40,6 +41,14 @@ add-highlighter shared/taskpaper/ regex (([a-z]+://\S+)|((mailto:)[\w+-]+@\S+))
# Commands
# ‾‾‾‾‾‾‾‾
define-command -hidden taskpaper-trim-indent %{
evaluate-commands -no-hooks -draft -itersel %{
execute-keys <a-x>
# remove trailing white spaces
try %{ execute-keys -draft s \h + $ <ret> d }
}
}
define-command -hidden taskpaper-indent-on-new-line %{
evaluate-commands -draft -itersel %{
# preserve previous line indent