summaryrefslogtreecommitdiff
path: root/lua/lsp
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lsp')
-rw-r--r--lua/lsp/init.lua30
-rw-r--r--lua/lsp/null-ls.lua26
2 files changed, 56 insertions, 0 deletions
diff --git a/lua/lsp/init.lua b/lua/lsp/init.lua
index a219fb1b..29676214 100644
--- a/lua/lsp/init.lua
+++ b/lua/lsp/init.lua
@@ -64,6 +64,36 @@ function M.common_capabilities()
return capabilities
end
+function M.get_ls_capabilities(client_id)
+ local client
+ if not client_id then
+ local buf_clients = vim.lsp.buf_get_clients()
+ for _, buf_client in ipairs(buf_clients) do
+ if buf_client.name ~= "null-ls" then
+ client_id = buf_client.id
+ break
+ end
+ end
+ end
+ if not client_id then
+ error "Unable to determine client_id"
+ end
+
+ client = vim.lsp.get_client_by_id(tonumber(client_id))
+
+ local enabled_caps = {}
+
+ for k, v in pairs(client.resolved_capabilities) do
+ if v == true then
+ -- print("got cap: ", vim.inspect(caps))
+ table.insert(enabled_caps, k)
+ -- vim.list_extend(enabled_caps, cap)
+ end
+ end
+
+ return enabled_caps
+end
+
function M.common_on_init(client, bufnr)
if lvim.lsp.on_init_callback then
lvim.lsp.on_init_callback(client, bufnr)
diff --git a/lua/lsp/null-ls.lua b/lua/lsp/null-ls.lua
index 7adfa218..19727e15 100644
--- a/lua/lsp/null-ls.lua
+++ b/lua/lsp/null-ls.lua
@@ -23,6 +23,26 @@ function M.get_registered_providers_by_filetype(ft)
return matches
end
+function M.get_missing_providers_by_filetype(ft)
+ local matches = {}
+ for _, provider in pairs(M.requested_providers) do
+ if vim.tbl_contains(provider.filetypes, ft) then
+ local provider_name = provider.name
+
+ table.insert(matches, provider_name)
+ end
+ end
+
+ return matches
+end
+
+local function register_failed_request(ft, provider, operation)
+ if not lvim.lang[ft][operation]._failed_requests then
+ lvim.lang[ft][operation]._failed_requests = {}
+ end
+ table.insert(lvim.lang[ft][operation]._failed_requests, provider)
+end
+
local function validate_nodejs_provider(provider)
local command_path
local root_dir
@@ -80,6 +100,9 @@ function M.setup(filetype)
builtin_formatter._opts.command = resolved_path
table.insert(M.requested_providers, builtin_formatter)
u.lvim_log(string.format("Using format provider: [%s]", builtin_formatter.name))
+ else
+ -- mark it here to avoid re-doing the lookup again
+ register_failed_request(filetype, formatter.exe, "formatters")
end
end
end
@@ -101,6 +124,9 @@ function M.setup(filetype)
builtin_diagnoser._opts.command = resolved_path
table.insert(M.requested_providers, builtin_diagnoser)
u.lvim_log(string.format("Using linter provider: [%s]", builtin_diagnoser.name))
+ else
+ -- mark it here to avoid re-doing the lookup again
+ register_failed_request(filetype, linter.exe, "linters")
end
end
end