diff options
-rw-r--r-- | lua/lvim/lsp/config.lua | 13 | ||||
-rw-r--r-- | lua/lvim/lsp/init.lua | 5 | ||||
-rw-r--r-- | lua/lvim/lsp/templates.lua | 10 | ||||
-rw-r--r-- | utils/installer/config.example.lua | 16 | ||||
-rw-r--r-- | utils/installer/config_win.example.lua | 16 |
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) |