mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
fix(diagnostic): fix option resolution in open_float (#16229)
This commit is contained in:
parent
f26b391317
commit
fd347840ba
@ -1154,6 +1154,17 @@ function M.open_float(bufnr, opts)
|
|||||||
error("Invalid value for option 'scope'")
|
error("Invalid value for option 'scope'")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
do
|
||||||
|
-- Resolve options with user settings from vim.diagnostic.config
|
||||||
|
-- Unlike the other decoration functions (e.g. set_virtual_text, set_signs, etc.) `open_float`
|
||||||
|
-- does not have a dedicated table for configuration options; instead, the options are mixed in
|
||||||
|
-- with its `opts` table which also includes "keyword" parameters. So we create a dedicated
|
||||||
|
-- options table that inherits missing keys from the global configuration before resolving.
|
||||||
|
local t = global_diagnostic_options.float
|
||||||
|
local float_opts = vim.tbl_extend("keep", opts, type(t) == "table" and t or {})
|
||||||
|
opts = get_resolved_options({ float = float_opts }, nil, bufnr).float
|
||||||
|
end
|
||||||
|
|
||||||
local diagnostics = M.get(bufnr, opts)
|
local diagnostics = M.get(bufnr, opts)
|
||||||
clamp_line_numbers(bufnr, diagnostics)
|
clamp_line_numbers(bufnr, diagnostics)
|
||||||
|
|
||||||
@ -1184,17 +1195,6 @@ function M.open_float(bufnr, opts)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
do
|
|
||||||
-- Resolve options with user settings from vim.diagnostic.config
|
|
||||||
-- Unlike the other decoration functions (e.g. set_virtual_text, set_signs, etc.) `open_float`
|
|
||||||
-- does not have a dedicated table for configuration options; instead, the options are mixed in
|
|
||||||
-- with its `opts` table which also includes "keyword" parameters. So we create a dedicated
|
|
||||||
-- options table that inherits missing keys from the global configuration before resolving.
|
|
||||||
local t = global_diagnostic_options.float
|
|
||||||
local float_opts = vim.tbl_extend("keep", opts, type(t) == "table" and t or {})
|
|
||||||
opts = get_resolved_options({ float = float_opts }, nil, bufnr).float
|
|
||||||
end
|
|
||||||
|
|
||||||
local lines = {}
|
local lines = {}
|
||||||
local highlights = {}
|
local highlights = {}
|
||||||
local show_header = vim.F.if_nil(opts.show_header, true)
|
local show_header = vim.F.if_nil(opts.show_header, true)
|
||||||
|
@ -1240,6 +1240,41 @@ describe('vim.diagnostic', function()
|
|||||||
return lines
|
return lines
|
||||||
]])
|
]])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('can filter by severity', function()
|
||||||
|
local count_diagnostics_with_severity = function(min_severity, max_severity)
|
||||||
|
return exec_lua([[
|
||||||
|
local min_severity, max_severity = ...
|
||||||
|
vim.diagnostic.config({
|
||||||
|
float = {
|
||||||
|
severity = {min=min_severity, max=max_severity},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
|
||||||
|
make_error("Syntax error", 0, 1, 0, 3),
|
||||||
|
make_info('Info', 0, 3, 0, 4),
|
||||||
|
make_error('Error', 0, 2, 0, 2),
|
||||||
|
make_warning('Warning', 0, 0, 0, 1),
|
||||||
|
})
|
||||||
|
|
||||||
|
local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { show_header = false })
|
||||||
|
if not float_bufnr then
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
|
||||||
|
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
|
||||||
|
vim.api.nvim_win_close(winnr, true)
|
||||||
|
return #lines
|
||||||
|
]], min_severity, max_severity)
|
||||||
|
end
|
||||||
|
|
||||||
|
eq(2, count_diagnostics_with_severity("ERROR"))
|
||||||
|
eq(3, count_diagnostics_with_severity("WARN"))
|
||||||
|
eq(1, count_diagnostics_with_severity("WARN", "WARN"))
|
||||||
|
eq(4, count_diagnostics_with_severity("HINT"))
|
||||||
|
eq(0, count_diagnostics_with_severity("HINT", "HINT"))
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
describe('setloclist()', function()
|
describe('setloclist()', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user