diff options
Diffstat (limited to 'lua/lsp')
| -rw-r--r-- | lua/lsp/init.lua | 30 | ||||
| -rw-r--r-- | lua/lsp/null-ls.lua | 26 | 
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 | 
