--local on_attach = require("nvchad.configs.lspconfig").on_attach
--local on_init = require("nvchad.configs.lspconfig").on_init
--local capabilities = require("nvchad.configs.lspconfig").capabilities

local lspconfig = require("lspconfig")
local util = require("lspconfig/util")
--local servers = { "html", "cssls" }

-- lsps with default config
--for _, lsp in ipairs(servers) do
--  lspconfig[lsp].setup {
--    on_attach = on_attach,
--    on_init = on_init,
--    capabilities = capabilities,
--  }
--end

-- typescript
lspconfig.tsserver.setup({
  on_attach = on_attach,
  on_init = on_init,
  capabilities = capabilities,
})

lspconfig.gopls.setup({
  on_attach = on_attach,
  capabilities = capabilities,
  cmd = { "gopls" },
  filetypes = { "go", "gomod", "gowork", "gotmpl" },
  root_dir = util.root_pattern("go.work", "go.mod", ".git"),
  settings = {
    gopls = {
      completeUnimported = true,
      usePlaceholders = true,
      analyses = {
        unusedparams = true,
      },
    },
  },
})

lspconfig.pyright.setup({
  on_attach = on_attach,
  capabilities = capabilities,
  filetypes = { "python" },
})

lspconfig.powershell_es.setup({
  bundle_path = vim.fn.stdpath("data")
    .. "/mason/packages/powershell-editor-services",
})

lspconfig.bashls.setup({})

omnisharp_bin = vim.fn.stdpath("data")
  .. "/mason/packages/omnisharp/omnisharp"

lspconfig.omnisharp.setup({
  on_attach = on_attach,
  capabilities = capabilities,
  filetypes = { "cs" },
  cmd = {
    omnisharp_bin,
    "--languageserver",
    "--hostPID",
    tostring(pid),
  },
})
