summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCPea <[email protected]>2022-06-26 19:08:54 +0700
committerGitHub <[email protected]>2022-06-26 14:08:54 +0200
commitc6431a09c7e6541dba46a7f7e6db7a34d0d00092 (patch)
tree0b3835e07f37519cca9ab6b9cc676b5aaca94fe3
parent12f8798bb05038a6269c6e50fe20c53ac47f75e3 (diff)
feat(lsp): add option to override default `nvim-lsp-installer` settings (#2698)
-rw-r--r--lua/lvim/lsp/config.lua13
-rw-r--r--lua/lvim/lsp/init.lua5
-rw-r--r--lua/lvim/lsp/templates.lua10
-rw-r--r--utils/installer/config.example.lua16
-rw-r--r--utils/installer/config_win.example.lua16
5 files changed, 53 insertions, 7 deletions
diff --git a/lua/lvim/lsp/config.lua b/lua/lvim/lsp/config.lua
index 1f84c4e2..7dc4c217 100644
--- a/lua/lvim/lsp/config.lua
+++ b/lua/lvim/lsp/config.lua
@@ -119,6 +119,19 @@ return {
insert_mode = {},
visual_mode = {},
},
+ ---@usage list of settings of nvim-lsp-installer
+ installer = {
+ setup = {
+ ensure_installed = {},
+ ui = {
+ icons = {
+ server_installed = "✓",
+ server_pending = "",
+ server_uninstalled = "✗",
+ },
+ },
+ },
+ },
null_ls = {
setup = {},
config = {},
diff --git a/lua/lvim/lsp/init.lua b/lua/lvim/lsp/init.lua
index 2f3258c9..505c1bc1 100644
--- a/lua/lvim/lsp/init.lua
+++ b/lua/lvim/lsp/init.lua
@@ -122,10 +122,7 @@ function M.setup()
append_default_schemas = true,
}
- require("nvim-lsp-installer").setup {
- -- use the default nvim_data_dir, since the server binaries are independent
- install_root_dir = utils.join_paths(vim.call("stdpath", "data"), "lsp_servers"),
- }
+ require("nvim-lsp-installer").setup(lvim.lsp.installer.setup)
require("lvim.lsp.null-ls").setup()
diff --git a/lua/lvim/lsp/templates.lua b/lua/lvim/lsp/templates.lua
index 09f82430..578362a7 100644
--- a/lua/lvim/lsp/templates.lua
+++ b/lua/lvim/lsp/templates.lua
@@ -17,12 +17,20 @@ end
local skipped_filetypes = lvim.lsp.automatic_configuration.skipped_filetypes
local skipped_servers = lvim.lsp.automatic_configuration.skipped_servers
+local ensure_installed_servers = lvim.lsp.installer.setup.ensure_installed
+
+---Check if we should skip generating an ftplugin file based on the server_name
+---@param server_name string name of a valid language server
+local function should_skip(server_name)
+ -- ensure_installed_servers should take priority over skipped_servers
+ return vim.tbl_contains(skipped_servers, server_name) and not vim.tbl_contains(ensure_installed_servers, server_name)
+end
---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(skipped_servers, server_name) then
+ if should_skip(server_name) then
return
end
diff --git a/utils/installer/config.example.lua b/utils/installer/config.example.lua
index 1bcff7f0..036b8ec2 100644
--- a/utils/installer/config.example.lua
+++ b/utils/installer/config.example.lua
@@ -84,6 +84,20 @@ lvim.builtin.treesitter.highlight.enabled = true
-- generic LSP settings
+-- -- make sure server will always be installed even if the server is in skipped_servers list
+-- lvim.lsp.installer.setup.ensure_installed = {
+-- "sumeko_lua",
+-- "jsonls",
+-- }
+-- -- change UI setting of `LspInstallInfo`
+-- -- see <https://github.com/williamboman/nvim-lsp-installer#default-configuration>
+-- lvim.lsp.installer.setup.ui.check_outdated_servers_on_open = false
+-- lvim.lsp.installer.setup.ui.border = "rounded"
+-- lvim.lsp.installer.setup.ui.keymaps = {
+-- uninstall_server = "d",
+-- toggle_server_expand = "o",
+-- }
+
-- ---@usage disable automatic installation of servers
-- lvim.lsp.automatic_servers_installation = false
@@ -94,7 +108,7 @@ lvim.builtin.treesitter.highlight.enabled = true
-- require("lvim.lsp.manager").setup("pyright", opts)
-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. !!Requires `:LvimCacheReset` to take effect!!
--- ---`:LvimInfo` lists which server(s) are skiipped for the current filetype
+-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype
-- vim.tbl_map(function(server)
-- return server ~= "emmet_ls"
-- end, lvim.lsp.automatic_configuration.skipped_servers)
diff --git a/utils/installer/config_win.example.lua b/utils/installer/config_win.example.lua
index 011ca0da..cb110664 100644
--- a/utils/installer/config_win.example.lua
+++ b/utils/installer/config_win.example.lua
@@ -99,6 +99,20 @@ lvim.builtin.treesitter.highlight.enabled = true
-- generic LSP settings
+-- -- make sure server will always be installed even if the server is in skipped_servers list
+-- lvim.lsp.installer.setup.ensure_installed = {
+-- "sumeko_lua",
+-- "jsonls",
+-- }
+-- -- change UI setting of `LspInstallInfo`
+-- -- see <https://github.com/williamboman/nvim-lsp-installer#default-configuration>
+-- lvim.lsp.installer.setup.ui.check_outdated_servers_on_open = false
+-- lvim.lsp.installer.setup.ui.border = "rounded"
+-- lvim.lsp.installer.setup.ui.keymaps = {
+-- uninstall_server = "d",
+-- toggle_server_expand = "o",
+-- }
+
-- ---@usage disable automatic installation of servers
-- lvim.lsp.automatic_servers_installation = false
@@ -109,7 +123,7 @@ lvim.builtin.treesitter.highlight.enabled = true
-- require("lvim.lsp.manager").setup("pyright", opts)
-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. !!Requires `:LvimCacheReset` to take effect!!
--- ---`:LvimInfo` lists which server(s) are skiipped for the current filetype
+-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype
-- vim.tbl_map(function(server)
-- return server ~= "emmet_ls"
-- end, lvim.lsp.automatic_configuration.skipped_servers)