diff options
| author | William Boman <william@redwill.se> | 2023-12-01 16:11:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-12-01 16:11:39 +0100 |
| commit | dd67d01335a27bff4b5dcb580c7a4bce0f4e2105 (patch) | |
| tree | 6a5a7b5cea269d26cc48656773b2c41714caf44f /lua | |
| parent | feat: add hydra_lsp mapping (#333) (diff) | |
| download | mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.tar mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.tar.gz mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.tar.bz2 mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.tar.lz mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.tar.xz mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.tar.zst mason-lspconfig-dd67d01335a27bff4b5dcb580c7a4bce0f4e2105.zip | |
feat: add support for `*` filetype specifier (#335)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason-lspconfig/api/command.lua | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/lua/mason-lspconfig/api/command.lua b/lua/mason-lspconfig/api/command.lua index 77db6eb..b0b100d 100644 --- a/lua/mason-lspconfig/api/command.lua +++ b/lua/mason-lspconfig/api/command.lua @@ -61,27 +61,26 @@ local function parse_packages_from_heuristics() -- Prompt user which server they want to install (based on the current filetype) local current_ft = vim.api.nvim_buf_get_option(vim.api.nvim_get_current_buf(), "filetype") local filetype_mapping = require "mason-lspconfig.mappings.filetype" - return Optional.of_nilable(filetype_mapping[current_ft]) - :if_not_present(function() - notify(("No LSP servers found for filetype %q."):format(current_ft), vim.log.levels.ERROR) - end) - :map(function(server_names) - return a.promisify(vim.ui.select)(server_names, { - prompt = ("Please select which server you want to install for filetype %q:"):format(current_ft), - format_item = function(server_name) - if registry.is_installed(server_mapping.lspconfig_to_package[server_name]) then - return ("%s (installed)"):format(server_name) - else - return server_name - end - end, - }) - end) - :map(function(server_name) - local package_name = server_mapping.lspconfig_to_package[server_name] - return { { package = package_name, version = nil } } - end) - :or_else_get(_.always {}) + local server_names = _.flatten(_.concat(filetype_mapping[current_ft] or {}, filetype_mapping["*"] or {})) + if #server_names == 0 then + notify(("No LSP servers found for filetype %q."):format(current_ft), vim.log.levels.ERROR) + return {} + end + local server_name = a.promisify(vim.ui.select)(server_names, { + prompt = ("Please select which server you want to install for filetype %q:"):format(current_ft), + format_item = function(server_name) + if registry.is_installed(server_mapping.lspconfig_to_package[server_name]) then + return ("%s (installed)"):format(server_name) + else + return server_name + end + end, + }) + if server_name == nil then + return {} + end + local package_name = server_mapping.lspconfig_to_package[server_name] + return { { package = package_name, version = nil } } end local parse_packages_to_install = _.cond { |
