diff --git a/lua/lspconfig/health.lua b/lua/lspconfig/health.lua index 64c584cf19..c311a8284a 100644 --- a/lua/lspconfig/health.lua +++ b/lua/lspconfig/health.lua @@ -220,6 +220,38 @@ local function make_client_info(client, fname) return table.concat(info_lines, '\n') end +local function get_active_clients_list_by_ft(filetype) + local clients = M.get_lsp_clients() + local clients_list = {} + for _, client in pairs(clients) do + --- @diagnostic disable-next-line:undefined-field + local filetypes = client.config.filetypes or {} + for _, ft in pairs(filetypes) do + if ft == filetype then + table.insert(clients_list, client.name) + end + end + end + return clients_list +end + +local function get_other_matching_providers(filetype) + local configs = require 'lspconfig.configs' + local active_clients_list = get_active_clients_list_by_ft(filetype) + local other_matching_configs = {} + for _, config in pairs(configs) do + if not vim.tbl_contains(active_clients_list, config.name) then + local filetypes = config.filetypes or {} + for _, ft in pairs(filetypes) do + if ft == filetype then + table.insert(other_matching_configs, config) + end + end + end + end + return other_matching_configs +end + local function check_lspconfig(bufnr) bufnr = (bufnr and bufnr ~= -1) and bufnr or nil @@ -267,7 +299,7 @@ local function check_lspconfig(bufnr) end end - local other_matching_configs = not bufnr and {} or util.get_other_matching_providers(buffer_filetype) + local other_matching_configs = not bufnr and {} or get_other_matching_providers(buffer_filetype) if not vim.tbl_isempty(other_matching_configs) then health.info(('Other clients that match the "%s" filetype:'):format(buffer_filetype)) for _, config in ipairs(other_matching_configs) do diff --git a/lua/lspconfig/util.lua b/lua/lspconfig/util.lua index e2bba2e19c..20257f7fba 100644 --- a/lua/lspconfig/util.lua +++ b/lua/lspconfig/util.lua @@ -208,52 +208,6 @@ function M.insert_package_json(config_files, field, fname) return config_files end -function M.get_active_clients_list_by_ft(filetype) - local clients = M.get_lsp_clients() - local clients_list = {} - for _, client in pairs(clients) do - --- @diagnostic disable-next-line:undefined-field - local filetypes = client.config.filetypes or {} - for _, ft in pairs(filetypes) do - if ft == filetype then - table.insert(clients_list, client.name) - end - end - end - return clients_list -end - -function M.get_other_matching_providers(filetype) - local configs = require 'lspconfig.configs' - local active_clients_list = M.get_active_clients_list_by_ft(filetype) - local other_matching_configs = {} - for _, config in pairs(configs) do - if not vim.tbl_contains(active_clients_list, config.name) then - local filetypes = config.filetypes or {} - for _, ft in pairs(filetypes) do - if ft == filetype then - table.insert(other_matching_configs, config) - end - end - end - end - return other_matching_configs -end - -function M.get_config_by_ft(filetype) - local configs = require 'lspconfig.configs' - local matching_configs = {} - for _, config in pairs(configs) do - local filetypes = config.filetypes or {} - for _, ft in pairs(filetypes) do - if ft == filetype then - table.insert(matching_configs, config) - end - end - end - return matching_configs -end - function M.get_active_client_by_name(bufnr, servername) --TODO(glepnir): remove this for loop when we want only support 0.10+ for _, client in pairs(M.get_lsp_clients { bufnr = bufnr }) do diff --git a/plugin/lspconfig.lua b/plugin/lspconfig.lua index 0283d84732..471f24c4a9 100644 --- a/plugin/lspconfig.lua +++ b/plugin/lspconfig.lua @@ -63,6 +63,20 @@ local get_clients_from_cmd_args = function(arg) return result end +local function get_config_by_ft(filetype) + local configs = require 'lspconfig.configs' + local matching_configs = {} + for _, config in pairs(configs) do + local filetypes = config.filetypes or {} + for _, ft in pairs(filetypes) do + if ft == filetype then + table.insert(matching_configs, config) + end + end + end + return matching_configs +end + -- Called from plugin/lspconfig.vim because it requires knowing that the last -- script in scriptnames to be executed is lspconfig. api.nvim_create_user_command('LspInfo', ':che lspconfig', { desc = 'Deprecated alias to `:che lspconfig`' }) @@ -77,7 +91,7 @@ api.nvim_create_user_command('LspStart', function(info) end end - local matching_configs = util.get_config_by_ft(vim.bo.filetype) + local matching_configs = get_config_by_ft(vim.bo.filetype) for _, config in ipairs(matching_configs) do config.launch() end