summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/core/galaxyline.lua14
-rw-r--r--lua/lsp/null-ls.lua11
-rw-r--r--lua/utils/init.lua26
3 files changed, 41 insertions, 10 deletions
diff --git a/lua/core/galaxyline.lua b/lua/core/galaxyline.lua
index 63cffcf9..b2325b19 100644
--- a/lua/core/galaxyline.lua
+++ b/lua/core/galaxyline.lua
@@ -203,25 +203,19 @@ table.insert(gls.right, {
local function get_attached_provider_name(msg)
msg = msg or "LSP Inactive"
local buf_clients = vim.lsp.buf_get_clients()
+ local utils = require "utils"
if next(buf_clients) == nil then
return msg
end
local buf_ft = vim.bo.filetype
local buf_client_names = {}
- local null_ls_providers = require("lsp.null-ls").requested_providers
+ local null_ls_providers = require("lsp.null-ls").get_registered_providers_by_filetype(buf_ft)
for _, client in pairs(buf_clients) do
- if client.name == "null-ls" then
- for _, provider in pairs(null_ls_providers) do
- if vim.tbl_contains(provider.filetypes, buf_ft) then
- if not vim.tbl_contains(buf_client_names, provider.name) then
- table.insert(buf_client_names, provider.name)
- end
- end
- end
- else
+ if client.name ~= "null-ls" then
table.insert(buf_client_names, client.name)
end
end
+ utils.list_extend_unique(buf_client_names, null_ls_providers)
return table.concat(buf_client_names, ", ")
end
diff --git a/lua/lsp/null-ls.lua b/lua/lsp/null-ls.lua
index d2222602..468d12a6 100644
--- a/lua/lsp/null-ls.lua
+++ b/lua/lsp/null-ls.lua
@@ -6,6 +6,17 @@ local nodejs_local_providers = { "prettier", "prettierd", "prettier_d_slim", "es
M.requested_providers = {}
+function M.get_registered_providers_by_filetype(ft)
+ local matches = {}
+ for _, provider in pairs(M.requested_providers) do
+ if vim.tbl_contains(provider.filetypes, ft) then
+ table.insert(matches, provider.name)
+ end
+ end
+
+ return matches
+end
+
local function is_nodejs_provider(provider)
for _, local_provider in ipairs(nodejs_local_providers) do
if local_provider == provider.exe then
diff --git a/lua/utils/init.lua b/lua/utils/init.lua
index 9eb29ad8..1685c1ca 100644
--- a/lua/utils/init.lua
+++ b/lua/utils/init.lua
@@ -110,6 +110,32 @@ function utils.is_string(t)
return type(t) == "string"
end
+--- Extends a list-like table with the unique values of another list-like table.
+---
+--- NOTE: This mutates dst!
+---
+--@see |vim.tbl_extend()|
+---
+--@param dst list which will be modified and appended to.
+--@param src list from which values will be inserted.
+--@param start Start index on src. defaults to 1
+--@param finish Final index on src. defaults to #src
+--@returns dst
+function utils.list_extend_unique(dst, src, start, finish)
+ vim.validate {
+ dst = { dst, "t" },
+ src = { src, "t" },
+ start = { start, "n", true },
+ finish = { finish, "n", true },
+ }
+ for i = start or 1, finish or #src do
+ if not vim.tbl_contains(dst, src[i]) then
+ table.insert(dst, src[i])
+ end
+ end
+ return dst
+end
+
function utils.unrequire(m)
package.loaded[m] = nil
_G[m] = nil