zig.kak/rc/zig.kak

63 lines
2.3 KiB
Plaintext

define-command -params .. \
-docstring %{
zig-run [<arguments>]: wrapper for `zig build run`
All the optional arguments are forwarded to zig build run
} zig-run %{ evaluate-commands %sh{
output=$(mktemp -d "${TMPDIR:-/tmp}"/kak-zig.XXXXXXXX)/fifo
mkfifo ${output}
( eval zig build run "$@" > ${output} 2>&1 & ) > /dev/null 2>&1 < /dev/null
printf %s\\n "evaluate-commands -try-client '$kak_opt_toolsclient' %{
edit! -fifo ${output} -scroll *zig*
set-option buffer filetype zig-build
hook -always -once buffer BufCloseFifo .* %{ nop %sh{ rm -r $(dirname ${output}) } }
try %{ focus }
}"
}}
define-command -params 1 \
-docstring %{
zig-auto-run <scope>: automatically run zig-run on save
} zig-auto-run %{
hook %arg{1} BufWritePost .* %{ zig-run }
}
hook -group zig-build-highlight global WinSetOption filetype=zig-build %{
add-highlighter window/zig-build group
add-highlighter window/zig-build/ regex '(error:)|(note:)' 1:Error 2:Information
add-highlighter window/zig-build/ regex '((?:\w|/|\.)+?):([0-9]+):([0-9]+): (?:.*?)' 1:variable 2:value 3:value
hook buffer -group zig-hooks NormalKey <ret> zig-jump
hook -once -always window WinSetOption filetype=.* %{
remove-hooks buffer zig-hooks
remove-highlighter window/zig-build
}
}
define-command -hidden zig-open-error -params 4 %{
evaluate-commands -try-client %opt{jumpclient} %{
edit -existing "%arg{1}" %arg{2} %arg{3}
echo -markup "{Information}{\}%arg{4}"
try %{ focus }
}
}
define-command -hidden zig-jump %{
evaluate-commands %{
execute-keys gl<a-?> '((?:\w|/|\.|-)+):([0-9]+):([0-9]+): (.+?)' <ret>
execute-keys s '((?:\w|/|\.|-)+):([0-9]+):([0-9]+): (.+?)$' <ret>;
zig-open-error "%reg{1}" "%reg{2}" "%reg{3}" "%reg{4}"
}
}
define-command \
-docstring %{
new-tools: open a new client for tools (make.kak, grep.kak, zig.kak) to use for output
Also sets the current client to be the one to go back to when jumping to an error
} new-tools %{
new rename-client tools
set-option global toolsclient tools
set-option global jumpclient %val{client}
}