# chezmoi:template:left-delimiter=--{{
--{{- /* vim: set filetype=lua: */ -}}
local M = { "neovim/nvim-lspconfig" }

M.name = "lspconfig"
M.tag = "v1.0.0"

M.dependencies = {
  { "j-hui/fidget.nvim", tag = "legacy", opts = {} },
  { "folke/trouble.nvim", tag = "v3.6.0" },
  { "folke/lazydev.nvim", tag = "v1.9.0", ft = "lua", opts = {} },
}

local function format_buffer(_)
  vim.lsp.buf.format()
end

local function on_attach(_, buffer)
  -- Create a command `:Format` local to the LSP buffer
  vim.api.nvim_buf_create_user_command(buffer, "Format", format_buffer, {
    desc = "Format current buffer with LSP",
  })
end

function M.config()
  local lspconfig = require("lspconfig")

  local capabilities = require("cmp_nvim_lsp").default_capabilities(
    vim.lsp.protocol.make_client_capabilities())

  --{{ if lookPath "bash-language-server" -}}
  -- npm install --global bash-language-server
  lspconfig.bashls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "buf" -}}
  lspconfig.buf_ls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "go" -}}
  lspconfig.gopls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "helm_ls" -}}
  lspconfig.helm_ls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "nu" -}}
  lspconfig.nushell.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "templ" -}}
  lspconfig.templ.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "vscode-eslint-language-server" -}}
  -- # npm i -g vscode-langservers-extracted
  lspconfig.eslint.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }

  lspconfig.html.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }

  lspconfig.cssls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }

  lspconfig.jsonls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {},
  }
  --{{- end }}

  --{{ if lookPath "lua-language-server" -}}
  lspconfig.lua_ls.setup {
    capabilities = capabilities,
    on_attach = on_attach,
    settings = {
      Lua = {
        workspace = { checkThirdParty = false },
        telemetry = { enable = false },
      },
    },
  }
  --{{- end }}
end

return M