(var M {})

(vim.keymap.set "n" "=" vim.lsp.buf.format)
(vim.keymap.set "n" "^h" #(vim.lsp.inlay_hint.enable (not (vim.lsp.inlay_hint.is_enabled))))
(vim.keymap.set "n" "gd" vim.lsp.buf.definition)
(vim.keymap.set "n" "grh" vim.lsp.buf.hover)

(fn M.on_attach [client buf]
  (let [chars (fcollect [i 32 126]
                (string.char i))]
    (tset client :server_capabilities :completionProvider :triggerCharacters chars))
  (vim.lsp.completion.enable
    true
    client.id
    buf
    { :autotrigger true
      :convert #{ :abbr ($.label:gsub "%b()" "") } }))

M