27 lines
813 B
Lua
27 lines
813 B
Lua
-- https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/util/lsp.lua
|
|
|
|
---@class lib.lazyvim.lsp
|
|
local M = {}
|
|
|
|
---@alias lsp.Client.filter {id?:number, bufnr?:number, name?:string, method?:string, filter?:fun(client:lsp.Client):boolean}
|
|
|
|
---@param opts? lsp.Client.filter
|
|
function M.get_clients(opts)
|
|
local ret = {} ---@type vim.lsp.Client[]
|
|
|
|
if vim.lsp.get_clients then
|
|
ret = vim.lsp.get_clients(opts)
|
|
else
|
|
---@diagnostic disable-next-line: deprecated
|
|
ret = vim.lsp.get_active_clients(opts)
|
|
|
|
if opts and opts.method then
|
|
---@param client vim.lsp.Client
|
|
ret = vim.tbl_filter(function(client)
|
|
return client.supports_method(opts.method, { bufnr = opts.bufnr })
|
|
end, ret)
|
|
end
|
|
end
|
|
|
|
return opts and opts.filter and vim.tbl_filter(opts.filter, ret) or ret
|
|
end
|