diff --git a/.config/kak/autoload/filetype/markdown.kak b/.config/kak/autoload/filetype/markdown.kak index 50e820f4..d720381a 100644 --- a/.config/kak/autoload/filetype/markdown.kak +++ b/.config/kak/autoload/filetype/markdown.kak @@ -1,26 +1,15 @@ -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 -draft -save-regs "fbs/l" %{ - set-register b %reg{percent} - execute-keys -draft '%"fy' - edit -scratch - execute-keys '"fR' - set-register s %reg{percent} +# format markdown, ignoring block images! +define-command markdown-fmt %{ + evaluate-commands -draft -save-regs "/l" %{ + # block level images regex set-register / '(?S)^\h*!\[.*\]\(.*\)$' - 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' + # select, yank, replace with comment + execute-keys '%s"lyc!--img𝅙img--' + # pass to formatter + format + # select the comments, replace with original image + set-register / '(?S)^\h*' + execute-keys '%s"lR' } } @@ -38,8 +27,8 @@ hook global WinSetOption filetype=markdown %{ dprint fmt --stdin md --config "$HOME/.dprint.jsonc" fi } - hook -group markdown-auto-format window BufWritePre .* { markdown-fmt-impl } - map window normal = ': markdown-fmt-impl' + hook -group markdown-auto-format window BufWritePre .* %{ markdown-fmt } + map window normal = ': markdown-fmt' # override formatting commands define-command -override -hidden markdown-trim-indent %{