summaryrefslogtreecommitdiff
path: root/lua/lvim/lsp
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-04-14 20:47:22 +0200
committerGitHub <[email protected]>2022-04-14 23:17:22 +0430
commit198577aa756acdbbacc81e3953bc7e790277a8e6 (patch)
treeebee970befa766a25a154b9f0620f9d258dee728 /lua/lvim/lsp
parent332e974b53d8053a7102f669141cdc054d3f20d5 (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.lua89
-rw-r--r--lua/lvim/lsp/manager.lua6
-rw-r--r--lua/lvim/lsp/templates.lua12
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