aboutsummaryrefslogtreecommitdiff
path: root/dot_config/kak/autoload/rc/tools/format.kak
diff options
context:
space:
mode:
authortwells46 <173561638+twells46@users.noreply.github.com>2025-12-31 13:28:05 -0600
committertwells46 <173561638+twells46@users.noreply.github.com>2025-12-31 13:28:05 -0600
commit2140ab51deed88e90eafebf9520fa5f9995dc7c9 (patch)
tree03cf1dcd2900495c1efb79aaa85f3254ecd5fb87 /dot_config/kak/autoload/rc/tools/format.kak
parentff8f50638e4b17a9d7cc88d2f0d9560b7effce39 (diff)
Migrate from stow
Diffstat (limited to 'dot_config/kak/autoload/rc/tools/format.kak')
-rw-r--r--dot_config/kak/autoload/rc/tools/format.kak38
1 files changed, 38 insertions, 0 deletions
diff --git a/dot_config/kak/autoload/rc/tools/format.kak b/dot_config/kak/autoload/rc/tools/format.kak
new file mode 100644
index 0000000..2435af0
--- /dev/null
+++ b/dot_config/kak/autoload/rc/tools/format.kak
@@ -0,0 +1,38 @@
+declare-option -docstring "shell command used for the 'format-selections' and 'format-buffer' commands" \
+ str formatcmd
+
+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 '|<ret>'
+ %reg{e}
+ }
+}
+
+alias global format format-buffer