From 904cec3c4a329cf89fc3219d359239910d61f3f6 Mon Sep 17 00:00:00 2001 From: thing1 Date: Tue, 28 Jan 2025 09:14:32 +0000 Subject: init commit --- autoload/filetype/fidl.kak | 79 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 autoload/filetype/fidl.kak (limited to 'autoload/filetype/fidl.kak') diff --git a/autoload/filetype/fidl.kak b/autoload/filetype/fidl.kak new file mode 100644 index 0000000..351eeb4 --- /dev/null +++ b/autoload/filetype/fidl.kak @@ -0,0 +1,79 @@ +# Detection +hook global BufCreate .*\.fidl %{ + set-option buffer filetype fidl +} + +hook global WinSetOption filetype=fidl %< + require-module fidl + hook window ModeChange pop:insert:.* -group fidl-trim-indent fidl-trim-indent + hook window InsertChar \n -group fidl-indent fidl-indent-on-new-line + hook window InsertChar [)}] -group fidl-indent fidl-indent-on-closing + hook -once -always window WinSetOption filetype=.* %{ remove-hooks window fidl-.+ } +> + +hook -group fidl-highlight global WinSetOption filetype=fidl %{ + add-highlighter window/fidl ref fidl + hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/fidl } +} + +provide-module fidl %§ + +# Highlighters + +add-highlighter shared/fidl regions +add-highlighter shared/fidl/code default-region group + +add-highlighter shared/fidl/string region \" (? d } +} + +define-command -hidden fidl-indent-on-new-line %~ + evaluate-commands -draft -itersel %@ + try %{ # line comment + # copy the commenting prefix + execute-keys -draft k x s ^\h*/{2,}\h* yjghP + } catch %` + # preserve previous line indent + try %{ execute-keys -draft K } + # align to opening ( or { if possible + try %+ + execute-keys -draft [)}] m 1 + + catch %+ + # indent after lines ending with ( or { + try %! execute-keys -draft k x [({]$ j ! + + + ` + # remove trailing white spaces + try %{ execute-keys -draft k : fidl-trim-indent } + @ +~ + +define-command -hidden fidl-indent-on-closing %~ + evaluate-commands -draft -itersel %@ + # align to opening ( or { when alone on a line + try %< execute-keys -draft ^\h*[)}]$ m 1 > + @ +~ + +§ -- cgit v1.2.3