This commit removed the ability to receive symbols from all attached clients in the current buffer. Everything works as before when only one client is attached to a buffer. This also fixes outline LSP finding clients on nvim-0.7
42 lines
1.1 KiB
Lua
42 lines
1.1 KiB
Lua
local M = {}
|
|
local import_prefix = 'outline/providers/'
|
|
|
|
---@return outline.Provider?, table?
|
|
function M.find_provider()
|
|
if not M.providers then
|
|
M.providers = vim.tbl_map(function(p)
|
|
return import_prefix .. p
|
|
end, require('outline.config').get_providers())
|
|
end
|
|
|
|
for _, path in ipairs(M.providers) do
|
|
local provider = require(path)
|
|
local ok, info = provider.supports_buffer(0)
|
|
if ok then
|
|
return provider, info
|
|
end
|
|
end
|
|
end
|
|
|
|
---@return boolean found_provider
|
|
function M.has_provider()
|
|
return M.find_provider() ~= nil
|
|
end
|
|
|
|
---Call `sidebar.provider[method]` with args. NOP if no provider or no defined `method`
|
|
---@param sidebar outline.Sidebar
|
|
---@param method string
|
|
---@param args any[]
|
|
function M.action(sidebar, method, args)
|
|
if not sidebar.provider or not sidebar.provider[method] then
|
|
require('outline.utils').echo('No supported providers to perform this action.')
|
|
return
|
|
end
|
|
local ok = sidebar.provider[method](unpack(args))
|
|
if not ok then
|
|
require('outline.utils').echo('The provider could not perform this action successfully.')
|
|
end
|
|
end
|
|
|
|
return M
|