diff options
| author | kylo252 <[email protected]> | 2022-04-14 20:47:22 +0200 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2022-04-14 23:17:22 +0430 | 
| commit | 198577aa756acdbbacc81e3953bc7e790277a8e6 (patch) | |
| tree | ebee970befa766a25a154b9f0620f9d258dee728 /lua/lvim/lsp | |
| parent | 332e974b53d8053a7102f669141cdc054d3f20d5 (diff) | |
refactor(lsp): cleanup servers' override configuration (#2243)
* refactor(lsp): cleanup override settings
- rename lsp.override to lsp.automatic_configuration.ignored_servers
- add lsp.automatic_configuration.ignored_filetypes
* chore(info): update override section
* refactor(lsp): rename ignored to skipped
* fix: better deprecation handling
* docs(lsp): add example for (un-)skipping servers
* refactor(lsp): allow installing overridden servers
* docs(lsp): update config_win.example.lua as well
* chore(lsp): update skipped_servers list
* fix(logger): less noise from client_is_configured
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 | 
