diff options
| author | William Boman <william@redwill.se> | 2023-04-28 19:36:29 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-28 19:36:29 +0200 |
| commit | 391180785e066c662440f1fde3f9eec336f18782 (patch) | |
| tree | 71d00b62a8eef43a29ac77db65472e4807a70b18 | |
| parent | feat: add java_language_server (#127) (diff) | |
| download | mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.tar mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.tar.gz mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.tar.bz2 mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.tar.lz mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.tar.xz mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.tar.zst mason-lspconfig-391180785e066c662440f1fde3f9eec336f18782.zip | |
fix(command): don't display error if no language/server is selected in :LspInstall (#214)
| -rw-r--r-- | lua/mason-lspconfig/api/command.lua | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/lua/mason-lspconfig/api/command.lua b/lua/mason-lspconfig/api/command.lua index a64c768..77db6eb 100644 --- a/lua/mason-lspconfig/api/command.lua +++ b/lua/mason-lspconfig/api/command.lua @@ -14,41 +14,42 @@ local function parse_packages_from_user_args(user_args) return _.filter_map(function(server_specifier) local server_name, version = Package.Parse(server_specifier) - -- 1. first see if the provided arg is an actual lspconfig server name return Optional + -- 1. first see if the provided arg is an actual lspconfig server name .of_nilable(server_mapping.lspconfig_to_package[server_name]) -- 2. if not, check if it's a language specifier (e.g., "typescript" or "java") :or_(function() - return Optional.of_nilable(language_map[server_name]):map(function(package_names) - local package_names = _.filter(function(package_name) - return server_mapping.package_to_lspconfig[package_name] ~= nil - end, package_names) + return Optional.of_nilable(language_map[server_name]) + :if_not_present(function() + notify(("Could not find LSP server %q."):format(server_name), vim.log.levels.ERROR) + end) + :map(function(package_names) + package_names = _.filter(function(package_name) + return server_mapping.package_to_lspconfig[package_name] ~= nil + end, package_names) - if #package_names == 0 then - return nil - end + if #package_names == 0 then + return nil + end - return a.promisify(vim.ui.select)(package_names, { - prompt = ("Please select which server you want to install for language %q:"):format( - server_name - ), - format_item = function(package_name) - local server_name = server_mapping.package_to_lspconfig[package_name] - if registry.is_installed(package_name) then - return ("%s (installed)"):format(server_name) - else - return server_name - end - end, - }) - end) + return a.promisify(vim.ui.select)(package_names, { + prompt = ("Please select which server you want to install for language %q:"):format( + server_name + ), + format_item = function(package_name) + local lspconfig_name = server_mapping.package_to_lspconfig[package_name] + if registry.is_installed(package_name) then + return ("%s (installed)"):format(lspconfig_name) + else + return lspconfig_name + end + end, + }) + end) end) :map(function(package_name) return { package = package_name, version = version } end) - :if_not_present(function() - notify(("Could not find LSP server %q."):format(server_name), vim.log.levels.ERROR) - end) end, user_args) end @@ -61,6 +62,9 @@ local function parse_packages_from_heuristics() 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), @@ -77,10 +81,7 @@ local function parse_packages_from_heuristics() local package_name = server_mapping.lspconfig_to_package[server_name] return { { package = package_name, version = nil } } end) - :or_else_get(function() - notify(("No LSP servers found for filetype %q."):format(current_ft), vim.log.levels.ERROR) - return {} - end) + :or_else_get(_.always {}) end local parse_packages_to_install = _.cond { |
