summaryrefslogtreecommitdiff
path: root/lua/core/galaxyline.lua
diff options
context:
space:
mode:
authorAbouzar Parvan <[email protected]>2021-07-30 23:14:25 +0430
committerGitHub <[email protected]>2021-07-30 14:44:25 -0400
commitce8c63c6bf99bc5d8be5fc6c8db6023318791ac2 (patch)
tree433da248fc3e01ee2d541d873abad56d9310e5cf /lua/core/galaxyline.lua
parent176106f2234ef7807918b0c131bbd70df3e7c562 (diff)
Fix the galaxyline null pointer issue (#1179)
Diffstat (limited to 'lua/core/galaxyline.lua')
-rw-r--r--lua/core/galaxyline.lua25
1 files changed, 22 insertions, 3 deletions
diff --git a/lua/core/galaxyline.lua b/lua/core/galaxyline.lua
index aafe99bc..cf7d35d0 100644
--- a/lua/core/galaxyline.lua
+++ b/lua/core/galaxyline.lua
@@ -200,19 +200,38 @@ table.insert(gls.right, {
},
})
+-- TODO: this function doesn't need to be this complicated
local function get_attached_provider_name(msg)
msg = msg or "LSP Inactive"
-
local buf_ft = vim.bo.filetype
local buf_clients = vim.lsp.buf_get_clients()
if next(buf_clients) == nil then
return msg
end
+
+ local utils = require "utils"
+ local config = require("null-ls.config").get()
+ local builtins = require "null-ls.builtins"
+ -- concat all the builtin formatters and linters from null-ls
+ local all_things = builtins.formatting
+ for k, v in pairs(builtins.diagnostics) do
+ all_things[k] = v
+ end
+
+ -- if we open multiple filetypes in the same session
+ -- null-ls will register multiple formatter/linters
+ -- but only use the ones that support vim.bo.filetype
+ -- so we need to filter them
local buf_client_names = {}
for _, client in pairs(buf_clients) do
if client.name == "null-ls" then
- table.insert(buf_client_names, lvim.lang[buf_ft].linters[1])
- table.insert(buf_client_names, lvim.lang[buf_ft].formatter.exe)
+ -- for every registered formatter/linter in the current buffer
+ for _, v in pairs(config._names) do
+ -- show only the ones that are being used for the current filetype
+ if utils.has_value(all_things[v].filetypes, buf_ft) then
+ table.insert(buf_client_names, v)
+ end
+ end
else
table.insert(buf_client_names, client.name)
end