From c6431a09c7e6541dba46a7f7e6db7a34d0d00092 Mon Sep 17 00:00:00 2001 From: CPea <42694704+cpea2506@users.noreply.github.com> Date: Sun, 26 Jun 2022 19:08:54 +0700 Subject: feat(lsp): add option to override default `nvim-lsp-installer` settings (#2698) --- lua/lvim/lsp/config.lua | 13 +++++++++++++ lua/lvim/lsp/init.lua | 5 +---- lua/lvim/lsp/templates.lua | 10 +++++++++- 3 files changed, 23 insertions(+), 5 deletions(-) (limited to 'lua/lvim/lsp') 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 -- cgit v1.2.3