1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 05:30:05 +08:00
SpaceVim/bundle/trouble.nvim/lua/trouble/providers/diagnostic.lua
2023-07-01 20:30:44 +08:00

47 lines
1.1 KiB
Lua

local util = require("trouble.util")
---@class Lsp
local M = {}
---@param options TroubleOptions
---@return Item[]
function M.diagnostics(_, buf, cb, options)
if options.mode == "workspace_diagnostics" then
buf = nil
end
local items = {}
if vim.diagnostic then
local diags = vim.diagnostic.get(buf, { severity = options.severity })
for _, item in ipairs(diags) do
table.insert(items, util.process_item(item))
end
else
---@diagnostic disable-next-line: deprecated
local diags = buf and { [buf] = vim.lsp.diagnostic.get(buf) } or vim.lsp.diagnostic.get_all()
items = util.locations_to_items(diags, 1)
end
cb(items)
end
function M.get_signs()
local signs = {}
for _, v in pairs(util.severity) do
if v ~= "Other" then
-- pcall to catch entirely unbound or cleared out sign hl group
local status, sign = pcall(function()
return vim.trim(vim.fn.sign_getdefined(util.get_severity_label(v, "Sign"))[1].text)
end)
if not status then
sign = v:sub(1, 1)
end
signs[string.lower(v)] = sign
end
end
return signs
end
return M