mirror of
https://github.com/neovim/neovim.git
synced 2025-11-07 03:04:22 +00:00
lsp: add vim.lsp.diagnostic.set_qflist() function (#14831)
* Add vim.lsp.diagnostic.set_qflist() function * replaces opts.open_loclist with unified opts.open
This commit is contained in:
@@ -1470,12 +1470,36 @@ save({diagnostics}, {bufnr}, {client_id}) *vim.lsp.diagnostic.save()*
|
|||||||
save_extmarks({bufnr}, {client_id})
|
save_extmarks({bufnr}, {client_id})
|
||||||
TODO: Documentation
|
TODO: Documentation
|
||||||
|
|
||||||
|
set_qflist({opts}) *vim.lsp.diagnostic.set_qflist()*
|
||||||
|
Sets the quickfix list
|
||||||
|
|
||||||
|
Parameters: ~
|
||||||
|
{opts} table|nil Configuration table. Keys:
|
||||||
|
• {open}: (boolean, default true)
|
||||||
|
• Open quickfix list after set
|
||||||
|
|
||||||
|
• {client_id}: (number)
|
||||||
|
• If nil, will consider all clients attached to
|
||||||
|
buffer.
|
||||||
|
|
||||||
|
• {severity}: (DiagnosticSeverity)
|
||||||
|
• Exclusive severity to consider. Overrides
|
||||||
|
{severity_limit}
|
||||||
|
|
||||||
|
• {severity_limit}: (DiagnosticSeverity)
|
||||||
|
• Limit severity of diagnostics found. E.g.
|
||||||
|
"Warning" means { "Error", "Warning" } will be
|
||||||
|
valid.
|
||||||
|
|
||||||
|
• {workspace}: (boolean, default true)
|
||||||
|
• Set the list with workspace diagnostics
|
||||||
|
|
||||||
set_loclist({opts}) *vim.lsp.diagnostic.set_loclist()*
|
set_loclist({opts}) *vim.lsp.diagnostic.set_loclist()*
|
||||||
Sets the location list
|
Sets the location list
|
||||||
|
|
||||||
Parameters: ~
|
Parameters: ~
|
||||||
{opts} table|nil Configuration table. Keys:
|
{opts} table|nil Configuration table. Keys:
|
||||||
• {open_loclist}: (boolean, default true)
|
• {open}: (boolean, default true)
|
||||||
• Open loclist after set
|
• Open loclist after set
|
||||||
|
|
||||||
• {client_id}: (number)
|
• {client_id}: (number)
|
||||||
|
|||||||
@@ -1249,10 +1249,10 @@ function M.reset(client_id, buffer_client_map)
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Sets the location list
|
--- Gets diagnostics, converts them to quickfix/location list items, and applies the item_handler callback to the items.
|
||||||
|
---@param item_handler function Callback to apply to the diagnostic items
|
||||||
|
---@param command string|nil Command to execute after applying the item_handler
|
||||||
---@param opts table|nil Configuration table. Keys:
|
---@param opts table|nil Configuration table. Keys:
|
||||||
--- - {open_loclist}: (boolean, default true)
|
|
||||||
--- - Open loclist after set
|
|
||||||
--- - {client_id}: (number)
|
--- - {client_id}: (number)
|
||||||
--- - If nil, will consider all clients attached to buffer.
|
--- - If nil, will consider all clients attached to buffer.
|
||||||
--- - {severity}: (DiagnosticSeverity)
|
--- - {severity}: (DiagnosticSeverity)
|
||||||
@@ -1261,9 +1261,8 @@ end
|
|||||||
--- - Limit severity of diagnostics found. E.g. "Warning" means { "Error", "Warning" } will be valid.
|
--- - Limit severity of diagnostics found. E.g. "Warning" means { "Error", "Warning" } will be valid.
|
||||||
--- - {workspace}: (boolean, default false)
|
--- - {workspace}: (boolean, default false)
|
||||||
--- - Set the list with workspace diagnostics
|
--- - Set the list with workspace diagnostics
|
||||||
function M.set_loclist(opts)
|
local function apply_to_diagnostic_items(item_handler, command, opts)
|
||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
local open_loclist = if_nil(opts.open_loclist, true)
|
|
||||||
local current_bufnr = api.nvim_get_current_buf()
|
local current_bufnr = api.nvim_get_current_buf()
|
||||||
local diags = opts.workspace and M.get_all(opts.client_id) or {
|
local diags = opts.workspace and M.get_all(opts.client_id) or {
|
||||||
[current_bufnr] = M.get(current_bufnr, opts.client_id)
|
[current_bufnr] = M.get(current_bufnr, opts.client_id)
|
||||||
@@ -1280,13 +1279,51 @@ function M.set_loclist(opts)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
local items = util.diagnostics_to_items(diags, predicate)
|
local items = util.diagnostics_to_items(diags, predicate)
|
||||||
local win_id = vim.api.nvim_get_current_win()
|
item_handler(items)
|
||||||
util.set_loclist(items, win_id)
|
if command then
|
||||||
if open_loclist then
|
vim.cmd(command)
|
||||||
vim.cmd [[lopen]]
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Sets the quickfix list
|
||||||
|
---@param opts table|nil Configuration table. Keys:
|
||||||
|
--- - {open}: (boolean, default true)
|
||||||
|
--- - Open quickfix list after set
|
||||||
|
--- - {client_id}: (number)
|
||||||
|
--- - If nil, will consider all clients attached to buffer.
|
||||||
|
--- - {severity}: (DiagnosticSeverity)
|
||||||
|
--- - Exclusive severity to consider. Overrides {severity_limit}
|
||||||
|
--- - {severity_limit}: (DiagnosticSeverity)
|
||||||
|
--- - Limit severity of diagnostics found. E.g. "Warning" means { "Error", "Warning" } will be valid.
|
||||||
|
--- - {workspace}: (boolean, default true)
|
||||||
|
--- - Set the list with workspace diagnostics
|
||||||
|
function M.set_qflist(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.workspace = if_nil(opts.workspace, true)
|
||||||
|
local open_qflist = if_nil(opts.open, true)
|
||||||
|
local command = open_qflist and [[copen]] or nil
|
||||||
|
apply_to_diagnostic_items(util.set_qflist, command, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Sets the location list
|
||||||
|
---@param opts table|nil Configuration table. Keys:
|
||||||
|
--- - {open}: (boolean, default true)
|
||||||
|
--- - Open loclist after set
|
||||||
|
--- - {client_id}: (number)
|
||||||
|
--- - If nil, will consider all clients attached to buffer.
|
||||||
|
--- - {severity}: (DiagnosticSeverity)
|
||||||
|
--- - Exclusive severity to consider. Overrides {severity_limit}
|
||||||
|
--- - {severity_limit}: (DiagnosticSeverity)
|
||||||
|
--- - Limit severity of diagnostics found. E.g. "Warning" means { "Error", "Warning" } will be valid.
|
||||||
|
--- - {workspace}: (boolean, default false)
|
||||||
|
--- - Set the list with workspace diagnostics
|
||||||
|
function M.set_loclist(opts)
|
||||||
|
opts = opts or {}
|
||||||
|
local open_loclist = if_nil(opts.open, true)
|
||||||
|
local command = open_loclist and [[lopen]] or nil
|
||||||
|
apply_to_diagnostic_items(util.set_loclist, command, opts)
|
||||||
|
end
|
||||||
|
|
||||||
--- Disable diagnostics for the given buffer and client
|
--- Disable diagnostics for the given buffer and client
|
||||||
--- @param bufnr (optional, number): Buffer handle, defaults to current
|
--- @param bufnr (optional, number): Buffer handle, defaults to current
|
||||||
--- @param client_id (optional, number): Disable diagnostics for the given
|
--- @param client_id (optional, number): Disable diagnostics for the given
|
||||||
|
|||||||
Reference in New Issue
Block a user