local servers = {
  "lua_ls",
  "pyright",
  "ts_ls",
  "terraformls",
  --"phpactor",
  "intelephense",
  "emmet_language_server",
  "vue_ls",
  "eslint",
}

require("mason").setup()
require("mason-lspconfig").setup({
  ensure_installed = servers,
  automatic_installation = true,
})
require("mason-update-all").setup()

vim.api.nvim_create_autocmd("User", {
  pattern = "MasonUpdateAllComplete",
  callback = function()
    print("mason-update-all has finished")
  end,
})

local lsp_status_ok, lspconfig = pcall(require, "lspconfig")
if not lsp_status_ok then
  return
end

local opts = {}

for _, server in pairs(servers) do
  opts = {
    on_attach = require("user.lsp.handlers").on_attach,
    capabilities = require("user.lsp.handlers").capabilities,
  }

  server = vim.split(server, "@")[1]

  local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server)
  if require_ok then
    opts = vim.tbl_deep_extend("force", conf_opts, opts)
  end

  lspconfig[server].setup(opts)
end
