From b171583d3d7e2d8cbfbb1fedf3e71addbfcccb18 Mon Sep 17 00:00:00 2001 From: Daniel Fichtinger Date: Thu, 15 May 2025 21:56:01 -0400 Subject: [PATCH] AutoYADM commit: 2025-05-15 21:56:01 --- .config/kak/autoload/filetype/go.kak | 3 ++- .config/kak/autoload/format.kak | 40 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 .config/kak/autoload/format.kak diff --git a/.config/kak/autoload/filetype/go.kak b/.config/kak/autoload/filetype/go.kak index f3d54750..0b23ffe1 100644 --- a/.config/kak/autoload/filetype/go.kak +++ b/.config/kak/autoload/filetype/go.kak @@ -1,3 +1,4 @@ hook global WinSetOption filetype=go %{ - hook -group go-auto-format window BufWritePre .* lsp-formatting + set-option window lsp_fmt true + # hook -group go-auto-format window BufWritePre .* lsp-formatting } diff --git a/.config/kak/autoload/format.kak b/.config/kak/autoload/format.kak new file mode 100644 index 00000000..3acb8669 --- /dev/null +++ b/.config/kak/autoload/format.kak @@ -0,0 +1,40 @@ +declare-option -docstring "shell command used for the 'format-selections' and 'format-buffer' commands" \ + str formatcmd +declare-option -docstring "whether the LSP should be preferred for formatting" lsp_fmt bool false + +define-command format-buffer -docstring "Format the contents of the buffer" %{ + evaluate-commands -draft %{ + execute-keys '%' + format-selections + } +} + +define-command format-selections -docstring "Format the selections individually" %{ + evaluate-commands %sh{ + if [ -z "${kak_opt_formatcmd}" ]; then + echo "fail 'The option ''formatcmd'' must be set'" + fi + } + evaluate-commands -draft -no-hooks -save-regs 'e|' %{ + set-register e nop + set-register '|' %{ + format_in="$(mktemp "${TMPDIR:-/tmp}"/kak-formatter.XXXXXX)" + format_out="$(mktemp "${TMPDIR:-/tmp}"/kak-formatter.XXXXXX)" + + cat > "$format_in" + eval "$kak_opt_formatcmd" < "$format_in" > "$format_out" + if [ $? -eq 0 ]; then + cat "$format_out" + else + echo "set-register e fail formatter returned an error (exit code $?)" >"$kak_command_fifo" + cat "$format_in" + fi + rm -f "$format_in" "$format_out" + } + execute-keys '|' + %reg{e} + } +} + +alias global format format-buffer +