diff options
Diffstat (limited to 'lua/lvim/lsp')
| -rw-r--r-- | lua/lvim/lsp/config.lua | 89 | ||||
| -rw-r--r-- | lua/lvim/lsp/manager.lua | 6 | ||||
| -rw-r--r-- | lua/lvim/lsp/templates.lua | 12 | 
3 files changed, 59 insertions, 48 deletions
| diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua index 986cb500..182f8fbf 100644 --- a/lua/lvim/lsp/config.lua +++ b/lua/lvim/lsp/config.lua @@ -1,3 +1,43 @@ +local skipped_servers = { +  "angularls", +  "ansiblels", +  "ccls", +  "csharp_ls", +  "cssmodules_ls", +  "denols", +  "ember", +  "emmet_ls", +  "eslint", +  "eslintls", +  "golangci_lint_ls", +  "graphql", +  "jedi_language_server", +  "ltex", +  "ocamlls", +  "phpactor", +  "psalm", +  "pylsp", +  "quick_lint_js", +  "rome", +  "reason_ls", +  "scry", +  "solang", +  "solidity_ls", +  "sorbet", +  "sourcekit", +  "sourcery", +  "spectral", +  "sqlls", +  "sqls", +  "stylelint_lsp", +  "tailwindcss", +  "tflint", +  "verible", +  "vuels", +} + +local skipped_filetypes = { "markdown", "rst", "plaintext" } +  return {    templates_dir = join_paths(get_runtime_dir(), "site", "after", "ftplugin"),    diagnostics = { @@ -41,6 +81,12 @@ return {    on_attach_callback = nil,    on_init_callback = nil,    automatic_servers_installation = true, +  automatic_configuration = { +    ---@usage list of servers that the automatic installer will skip +    skipped_servers = skipped_servers, +    ---@usage list of filetypes that the automatic installer will skip +    skipped_filetypes = skipped_filetypes, +  },    buffer_mappings = {      normal_mode = {        ["K"] = { "<cmd>lua vim.lsp.buf.hover()<CR>", "Show hover" }, @@ -62,45 +108,6 @@ return {      setup = {},      config = {},    }, -  override = { -    "angularls", -    "ansiblels", -    "ccls", -    "csharp_ls", -    "cssmodules_ls", -    "denols", -    "ember", -    "emmet_ls", -    "eslint", -    "eslintls", -    "golangci_lint_ls", -    "grammarly", -    "graphql", -    "jedi_language_server", -    "ltex", -    "ocamlls", -    "phpactor", -    "psalm", -    "pylsp", -    "quick_lint_js", -    "reason_ls", -    "remark_ls", -    "rome", -    "scry", -    "solang", -    "solidity_ls", -    "sorbet", -    "sourcekit", -    "sourcery", -    "spectral", -    "sqlls", -    "sqls", -    "stylelint_lsp", -    "tailwindcss", -    "tflint", -    "verible", -    "vuels", -    "zeta_note", -    "zk", -  }, +  ---@deprecated use automatic_configuration.skipped_servers instead +  override = {},  } diff --git a/lua/lvim/lsp/manager.lua b/lua/lvim/lsp/manager.lua index 6c748020..09369d48 100644 --- a/lua/lvim/lsp/manager.lua +++ b/lua/lvim/lsp/manager.lua @@ -55,6 +55,7 @@ local function client_is_configured(server_name, ft)    local active_autocmds = vim.split(vim.fn.execute("autocmd FileType " .. ft), "\n")    for _, result in ipairs(active_autocmds) do      if result:match(server_name) then +      Log:debug(string.format("[%q] is already configured", server_name))        return true      end    end @@ -68,7 +69,6 @@ function M.setup(server_name, user_config)    vim.validate { name = { server_name, "string" } }    if lvim_lsp_utils.is_client_active(server_name) or client_is_configured(server_name) then -    Log:debug(string.format("[%q] is already configured. Ignoring repeated setup call.", server_name))      return    end @@ -77,9 +77,7 @@ function M.setup(server_name, user_config)    local servers = require "nvim-lsp-installer.servers"    local server_available, requested_server = servers.get_server(server_name) -  local is_overridden = vim.tbl_contains(lvim.lsp.override, server_name) - -  if not server_available or is_overridden then +  if not server_available then      pcall(function()        require("lspconfig")[server_name].setup(config)        buf_try_add(server_name) diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua index eb05615e..38e68fb6 100644 --- a/lua/lvim/lsp/templates.lua +++ b/lua/lvim/lsp/templates.lua @@ -15,16 +15,22 @@ function M.remove_template_files()    end  end +local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes +local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers +  ---Generates an ftplugin file based on the server_name in the selected directory  ---@param server_name string name of a valid language server, e.g. pyright, gopls, tsserver, etc.  ---@param dir string the full path to the desired directory  function M.generate_ftplugin(server_name, dir) -  if vim.tbl_contains(lvim.lsp.override, server_name) then +  if vim.tbl_contains(skipped_servers, server_name) then      return    end -  -- we need to go through lspconfig to get the corresponding filetypes currently -  local filetypes = lvim_lsp_utils.get_supported_filetypes(server_name) or {} +  -- get the supported filetypes and remove any ignored ones +  local filetypes = vim.tbl_filter(function(ft) +    return not vim.tbl_contains(skipped_filetypes, ft) +  end, lvim_lsp_utils.get_supported_filetypes(server_name) or {}) +    if not filetypes then      return    end | 
