diff options
| author | CPea <[email protected]> | 2022-06-26 19:08:54 +0700 | 
|---|---|---|
| committer | GitHub <[email protected]> | 2022-06-26 14:08:54 +0200 | 
| commit | c6431a09c7e6541dba46a7f7e6db7a34d0d00092 (patch) | |
| tree | 0b3835e07f37519cca9ab6b9cc676b5aaca94fe3 | |
| parent | 12f8798bb05038a6269c6e50fe20c53ac47f75e3 (diff) | |
feat(lsp): add option to override default `nvim-lsp-installer` settings (#2698)
| -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) | 
