diff --git a/.config/kak/autoload/filetype/markdown.kak b/.config/kak/autoload/filetype/markdown.kak index b2fb0c7b..50e820f4 100644 --- a/.config/kak/autoload/filetype/markdown.kak +++ b/.config/kak/autoload/filetype/markdown.kak @@ -1,12 +1,26 @@ +declare-option str markdown_formatcmd %{ + if dprint output-resolved-config >/dev/null 2>&1; then + dprint fmt --stdin md + else + dprint fmt --stdin md --config "$HOME/.dprint.jsonc" + fi +} define-command markdown-fmt-impl %{ - evaluate-commands -save-regs "fbs/" %{ + evaluate-commands -draft -save-regs "fbs/l" %{ set-register b %reg{percent} execute-keys -draft '%"fy' edit -scratch + execute-keys '"fR' set-register s %reg{percent} set-register / '(?S)^\h*!\[.*\]\(.*\)$' - execute-keys '%sc!--FICMD#--' - # format + execute-keys '%s"lyc!--𝅙--' + set-register | %opt{markdown_formatcmd} + execute-keys '%|' + set-register / '(?S)^\h*' + execute-keys '%s"lR%"fy' + buffer %reg{b} + delete-buffer %reg{s} + execute-keys '%"fR' } } @@ -24,7 +38,8 @@ hook global WinSetOption filetype=markdown %{ dprint fmt --stdin md --config "$HOME/.dprint.jsonc" fi } - hook -group markdown-auto-format window BufWritePre .* { format } + hook -group markdown-auto-format window BufWritePre .* { markdown-fmt-impl } + map window normal = ': markdown-fmt-impl' # override formatting commands define-command -override -hidden markdown-trim-indent %{