aboutsummaryrefslogtreecommitdiff
path: root/autoload/formatter.kak
blob: 08301645a85a6ce8941ba39f92c00df6efe5b160 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
declare-option str formatlspserver;

hook global BufSetOption filetype=json %{ set-option buffer formatcmd "jq" }

hook global BufSetOption filetype=fennel %{ set-option buffer formatcmd "fnlfmt -" }

hook global BufSetOption filetype=nix %{ set-option buffer formatcmd "nixfmt -" }

hook global BufSetOption filetype=ruby %{ set-option buffer formatlspserver rubocop }

hook global BufSetOption filetype=(?:javascript|typescript|jsx|tsx) %{
  evaluate-commands %sh{
    if [ -f "$PWD/biome.json" ]; then
      echo "set-option buffer formatlspserver biome"
    else
      echo "set-option buffer formatlspserver typescript-language-server"
    fi
  }
}

define-command biome-buffer -docstring 'Format buffer file on disk using biome' %{
  biome %val{buffile}
}

define-command biome -params .. -docstring 'Format project using biome' %{
  info %sh{
    npx biome check --fix "$@" && echo "Success" || echo "Failed"
  }
}

define-command apply-formatting -docstring 'Apply formatting with formatcmd or lsp' %{
  eval %sh{
    if [ -n "$kak_opt_formatcmd" ]; then
      echo format-buffer
    elif [ -n "$kak_opt_formatlspserver" ]; then
      echo "lsp-formatting-sync $kak_opt_formatlspserver"
    else
      echo lsp-formatting-sync
    fi
  }
}