aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/diagnostic_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/lua/diagnostic_spec.lua')
-rw-r--r--test/functional/lua/diagnostic_spec.lua446
1 files changed, 406 insertions, 40 deletions
diff --git a/test/functional/lua/diagnostic_spec.lua b/test/functional/lua/diagnostic_spec.lua
index ec53916024..a88da63e90 100644
--- a/test/functional/lua/diagnostic_spec.lua
+++ b/test/functional/lua/diagnostic_spec.lua
@@ -110,20 +110,35 @@ describe('vim.diagnostic', function()
it('retrieves diagnostics from all buffers and namespaces', function()
local result = exec_lua [[
- vim.diagnostic.set(diagnostic_ns, 1, {
+ local other_bufnr = vim.api.nvim_create_buf(true, false)
+ local lines = vim.api.nvim_buf_get_lines(diagnostic_bufnr, 0, -1, true)
+ vim.api.nvim_buf_set_lines(other_bufnr, 0, 1, false, lines)
+
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
make_error('Diagnostic #1', 1, 1, 1, 1),
make_error('Diagnostic #2', 2, 1, 2, 1),
})
- vim.diagnostic.set(other_ns, 2, {
+ vim.diagnostic.set(other_ns, other_bufnr, {
make_error('Diagnostic #3', 3, 1, 3, 1),
})
return vim.diagnostic.get()
]]
eq(3, #result)
- eq(2, exec_lua([[return #vim.tbl_filter(function(d) return d.bufnr == 1 end, ...)]], result))
+ eq(2, exec_lua([[return #vim.tbl_filter(function(d) return d.bufnr == diagnostic_bufnr end, ...)]], result))
eq('Diagnostic #1', result[1].message)
end)
+ it('resolves buffer number 0 to the current buffer', function()
+ eq(2, exec_lua [[
+ vim.api.nvim_set_current_buf(diagnostic_bufnr)
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
+ make_error('Diagnostic #1', 1, 1, 1, 1),
+ make_error('Diagnostic #2', 2, 1, 2, 1),
+ })
+ return #vim.diagnostic.get(0)
+ ]])
+ end)
+
it('saves and count a single error', function()
eq(1, exec_lua [[
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
@@ -271,6 +286,8 @@ describe('vim.diagnostic', function()
describe('show() and hide()', function()
it('works', function()
local result = exec_lua [[
+ local other_bufnr = vim.api.nvim_create_buf(true, false)
+
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
local result = {}
@@ -284,36 +301,289 @@ describe('vim.diagnostic', function()
local ns_2_diags = {
make_warning("Warning 1", 2, 1, 2, 5),
}
+ local other_buffer_diags = {
+ make_info("This is interesting", 0, 0, 0, 0)
+ }
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, ns_1_diags)
vim.diagnostic.set(other_ns, diagnostic_bufnr, ns_2_diags)
+ vim.diagnostic.set(diagnostic_ns, other_bufnr, other_buffer_diags)
- -- Both
- table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) + count_extmarks(diagnostic_bufnr, other_ns))
+ -- All buffers and namespaces
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
-- Hide one namespace
vim.diagnostic.hide(diagnostic_ns)
- table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns))
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
-- Show one namespace
vim.diagnostic.show(diagnostic_ns)
- table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns))
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ -- Hide one buffer
+ vim.diagnostic.hide(nil, other_bufnr)
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
- -- Hide all namespaces
+ -- Hide everything
vim.diagnostic.hide()
- table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) + count_extmarks(diagnostic_bufnr, other_ns))
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ -- Show one buffer
+ vim.diagnostic.show(nil, diagnostic_bufnr)
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ return result
+ ]]
+
+ eq(4, result[1])
+ eq(1, result[2])
+ eq(4, result[3])
+ eq(3, result[4])
+ eq(0, result[5])
+ eq(3, result[6])
+ end)
+
+ it("doesn't error after bwipeout on buffer", function()
+ exec_lua [[
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {{ lnum = 0, end_lnum = 0, col = 0, end_col = 0 }})
+ vim.cmd("bwipeout! " .. diagnostic_bufnr)
+
+ vim.diagnostic.show(diagnostic_ns)
+ vim.diagnostic.hide(diagnostic_ns)
+ ]]
+ end)
+ end)
- -- Show all namespaces
- vim.diagnostic.show()
- table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) + count_extmarks(diagnostic_bufnr, other_ns))
+ describe('enable() and disable()', function()
+ it('works without arguments', function()
+ local result = exec_lua [[
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+
+ local result = {}
+
+ vim.diagnostic.config({ underline = false, virtual_text = true })
+
+ local ns_1_diags = {
+ make_error("Error 1", 1, 1, 1, 5),
+ make_warning("Warning on Server 1", 2, 1, 2, 5),
+ }
+ local ns_2_diags = {
+ make_warning("Warning 1", 2, 1, 2, 5),
+ }
+
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, ns_1_diags)
+ vim.diagnostic.set(other_ns, diagnostic_bufnr, ns_2_diags)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns))
+
+ vim.diagnostic.disable()
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns))
+
+ -- Create a new buffer
+ local other_bufnr = vim.api.nvim_create_buf(true, false)
+ local other_buffer_diags = {
+ make_info("This is interesting", 0, 0, 0, 0)
+ }
+
+ vim.diagnostic.set(diagnostic_ns, other_bufnr, other_buffer_diags)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.enable()
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
return result
]]
eq(3, result[1])
eq(0, result[2])
- eq(2, result[3])
- eq(0, result[4])
+ eq(0, result[3])
+ eq(4, result[4])
+ end)
+
+ it('works with only a buffer argument', function()
+ local result = exec_lua [[
+ local other_bufnr = vim.api.nvim_create_buf(true, false)
+
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+
+ local result = {}
+
+ vim.diagnostic.config({ underline = false, virtual_text = true })
+
+ local ns_1_diags = {
+ make_error("Error 1", 1, 1, 1, 5),
+ make_warning("Warning on Server 1", 2, 1, 2, 5),
+ }
+ local ns_2_diags = {
+ make_warning("Warning 1", 2, 1, 2, 5),
+ }
+ local other_buffer_diags = {
+ make_info("This is interesting", 0, 0, 0, 0)
+ }
+
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, ns_1_diags)
+ vim.diagnostic.set(other_ns, diagnostic_bufnr, ns_2_diags)
+ vim.diagnostic.set(diagnostic_ns, other_bufnr, other_buffer_diags)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.disable(diagnostic_bufnr)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.enable(diagnostic_bufnr)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.disable(other_bufnr)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ return result
+ ]]
+
+ eq(4, result[1])
+ eq(1, result[2])
+ eq(4, result[3])
+ eq(3, result[4])
+ end)
+
+ it('works with only a namespace argument', function()
+ local result = exec_lua [[
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+
+ local result = {}
+
+ vim.diagnostic.config({ underline = false, virtual_text = true })
+
+ local ns_1_diags = {
+ make_error("Error 1", 1, 1, 1, 5),
+ make_warning("Warning on Server 1", 2, 1, 2, 5),
+ }
+ local ns_2_diags = {
+ make_warning("Warning 1", 2, 1, 2, 5),
+ }
+
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, ns_1_diags)
+ vim.diagnostic.set(other_ns, diagnostic_bufnr, ns_2_diags)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns))
+
+ vim.diagnostic.disable(nil, diagnostic_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns))
+
+ vim.diagnostic.enable(nil, diagnostic_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns))
+
+ vim.diagnostic.disable(nil, other_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns))
+
+ return result
+ ]]
+
+ eq(3, result[1])
+ eq(1, result[2])
+ eq(3, result[3])
+ eq(2, result[4])
+ end)
+
+ it('works with both a buffer and a namespace argument', function()
+ local result = exec_lua [[
+ local other_bufnr = vim.api.nvim_create_buf(true, false)
+
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+
+ local result = {}
+
+ vim.diagnostic.config({ underline = false, virtual_text = true })
+
+ local ns_1_diags = {
+ make_error("Error 1", 1, 1, 1, 5),
+ make_warning("Warning on Server 1", 2, 1, 2, 5),
+ }
+ local ns_2_diags = {
+ make_warning("Warning 1", 2, 1, 2, 5),
+ }
+ local other_buffer_diags = {
+ make_info("This is interesting", 0, 0, 0, 0)
+ }
+
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, ns_1_diags)
+ vim.diagnostic.set(other_ns, diagnostic_bufnr, ns_2_diags)
+ vim.diagnostic.set(diagnostic_ns, other_bufnr, other_buffer_diags)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.disable(diagnostic_bufnr, diagnostic_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.disable(diagnostic_bufnr, other_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ vim.diagnostic.enable(diagnostic_bufnr, diagnostic_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ -- Should have no effect
+ vim.diagnostic.disable(other_bufnr, other_ns)
+
+ table.insert(result, count_extmarks(diagnostic_bufnr, diagnostic_ns) +
+ count_extmarks(diagnostic_bufnr, other_ns) +
+ count_extmarks(other_bufnr, diagnostic_ns))
+
+ return result
+ ]]
+
+ eq(4, result[1])
+ eq(2, result[2])
+ eq(1, result[3])
+ eq(3, result[4])
eq(3, result[5])
end)
end)
@@ -380,6 +650,15 @@ describe('vim.diagnostic', function()
]])
end)
+
+ it("doesn't error after bwipeout called on buffer", function()
+ exec_lua [[
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {{ lnum = 0, end_lnum = 0, col = 0, end_col = 0 }})
+ vim.cmd("bwipeout! " .. diagnostic_bufnr)
+
+ vim.diagnostic.reset(diagnostic_ns)
+ ]]
+ end)
end)
describe('get_next_pos()', function()
@@ -437,6 +716,19 @@ describe('vim.diagnostic', function()
return vim.diagnostic.get_prev_pos { namespace = diagnostic_ns }
]])
end)
+
+ it('works with diagnostics past the end of the line #16349', function()
+ eq({4, 0}, exec_lua [[
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
+ make_error('Diagnostic #1', 3, 9001, 3, 9001),
+ make_error('Diagnostic #2', 4, 0, 4, 0),
+ })
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+ vim.api.nvim_win_set_cursor(0, {1, 1})
+ vim.diagnostic.goto_next { float = false }
+ return vim.diagnostic.get_next_pos { namespace = diagnostic_ns }
+ ]])
+ end)
end)
describe('get_prev_pos()', function()
@@ -633,7 +925,7 @@ describe('vim.diagnostic', function()
]]
eq(1, exec_lua [[return count_diagnostics(diagnostic_bufnr, vim.diagnostic.severity.ERROR, diagnostic_ns)]])
- -- eq(1, exec_lua [[return count_extmarks(diagnostic_bufnr, diagnostic_ns)]])
+ eq(1, exec_lua [[return count_extmarks(diagnostic_bufnr, diagnostic_ns)]])
end)
it('allows filtering by severity', function()
@@ -1032,6 +1324,44 @@ describe('vim.diagnostic', function()
end)
describe('open_float()', function()
+ it('can display a header', function()
+ eq({'Diagnostics:', '1. Syntax error'}, exec_lua [[
+ local diagnostics = {
+ make_error("Syntax error", 0, 1, 0, 3),
+ }
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
+ local float_bufnr, winnr = vim.diagnostic.open_float()
+ local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
+ vim.api.nvim_win_close(winnr, true)
+ return lines
+ ]])
+
+ eq({"We're no strangers to love...", '1. Syntax error'}, exec_lua [[
+ local diagnostics = {
+ make_error("Syntax error", 0, 1, 0, 3),
+ }
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
+ local float_bufnr, winnr = vim.diagnostic.open_float({header = "We're no strangers to love..."})
+ local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
+ vim.api.nvim_win_close(winnr, true)
+ return lines
+ ]])
+
+ eq({'You know the rules', '1. Syntax error'}, exec_lua [[
+ local diagnostics = {
+ make_error("Syntax error", 0, 1, 0, 3),
+ }
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
+ local float_bufnr, winnr = vim.diagnostic.open_float({header = {'You know the rules', 'Search'}})
+ local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
+ vim.api.nvim_win_close(winnr, true)
+ return lines
+ ]])
+ end)
+
it('can show diagnostics from the whole buffer', function()
eq({'1. Syntax error', '2. Some warning'}, exec_lua [[
local diagnostics = {
@@ -1040,7 +1370,7 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header = false})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header = false, scope="buffer"})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1057,7 +1387,7 @@ describe('vim.diagnostic', function()
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
vim.api.nvim_win_set_cursor(0, {2, 1})
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header=false, scope="line"})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header=false})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1072,7 +1402,7 @@ describe('vim.diagnostic', function()
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
vim.api.nvim_win_set_cursor(0, {1, 1})
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header=false, scope="line", pos=1})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header=false, pos=1})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1089,7 +1419,7 @@ describe('vim.diagnostic', function()
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
vim.api.nvim_win_set_cursor(0, {2, 2})
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header=false, scope="cursor"})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header=false, scope="cursor"})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1104,7 +1434,7 @@ describe('vim.diagnostic', function()
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
vim.api.nvim_win_set_cursor(0, {1, 1})
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header=false, scope="cursor", pos={1,3}})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header=false, scope="cursor", pos={1,3}})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1119,7 +1449,7 @@ describe('vim.diagnostic', function()
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
vim.api.nvim_win_set_cursor(0, {1, 1})
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header=false, scope="cursor", pos={0,first_line_len}})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header=false, scope="cursor", pos={0,first_line_len}})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1136,7 +1466,7 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {scope="line"})
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr)
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return #lines
@@ -1189,7 +1519,7 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {show_header = false})
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {header = false})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return #lines
@@ -1203,7 +1533,7 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {show_header = false, scope = "line", pos = 5})
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {header = false, pos = 5})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return #lines
@@ -1219,7 +1549,7 @@ describe('vim.diagnostic', function()
}
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {
- show_header = false,
+ header = false,
source = "if_many",
})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
@@ -1229,7 +1559,7 @@ describe('vim.diagnostic', function()
eq({"1. source x: Syntax error"}, exec_lua [[
local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {
- show_header = false,
+ header = false,
source = "always",
})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
@@ -1244,7 +1574,7 @@ describe('vim.diagnostic', function()
}
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, {
- show_header = false,
+ header = false,
source = "if_many",
})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
@@ -1268,7 +1598,7 @@ describe('vim.diagnostic', function()
vim.diagnostic.config({severity_sort = false})
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { show_header = false })
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { header = false })
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1276,7 +1606,7 @@ describe('vim.diagnostic', function()
eq({"1. Syntax error", "2. Error", "3. Warning", "4. Info"}, exec_lua [[
vim.diagnostic.config({severity_sort = true})
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { show_header = false })
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { header = false })
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1284,7 +1614,7 @@ describe('vim.diagnostic', function()
eq({"1. Info", "2. Warning", "3. Error", "4. Syntax error"}, exec_lua [[
vim.diagnostic.config({severity_sort = { reverse = true } })
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { show_header = false })
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { header = false })
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1308,7 +1638,7 @@ describe('vim.diagnostic', function()
make_warning('Warning', 0, 0, 0, 1),
})
- local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { show_header = false })
+ local float_bufnr, winnr = vim.diagnostic.open_float(diagnostic_bufnr, { header = false })
if not float_bufnr then
return 0
end
@@ -1335,7 +1665,7 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header = false, number = "always"})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header = false, scope = "buffer"})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1348,7 +1678,7 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {show_header = false, prefix = ""})
+ local float_bufnr, winnr = vim.diagnostic.open_float({header = false, scope = "buffer", prefix = ""})
local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
vim.api.nvim_win_close(winnr, true)
return lines
@@ -1357,12 +1687,12 @@ describe('vim.diagnostic', function()
eq({'1. Syntax error', '2. Some warning'}, exec_lua [[
local diagnostics = {
make_error("Syntax error", 0, 1, 0, 3),
- make_warning("Some warning", 1, 1, 1, 3),
+ make_warning("Some warning", 0, 1, 0, 3),
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {
- show_header = false,
+ local float_bufnr, winnr = vim.diagnostic.open_float({
+ header = false,
prefix = function(_, i, total)
-- Only show a number if there is more than one diagnostic
if total > 1 then
@@ -1382,8 +1712,8 @@ describe('vim.diagnostic', function()
}
vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
- local float_bufnr, winnr = vim.diagnostic.open_float(0, {
- show_header = false,
+ local float_bufnr, winnr = vim.diagnostic.open_float({
+ header = false,
prefix = function(_, i, total)
-- Only show a number if there is more than one diagnostic
if total > 1 then
@@ -1397,8 +1727,22 @@ describe('vim.diagnostic', function()
return lines
]])
- eq("Error executing lua: .../diagnostic.lua:0: prefix: expected 'string' or 'function', got 42",
- pcall_err(exec_lua, [[ vim.diagnostic.open_float(0, { prefix = 42 }) ]]))
+ eq("Error executing lua: .../diagnostic.lua:0: prefix: expected 'string' or 'table' or 'function', got 42",
+ pcall_err(exec_lua, [[ vim.diagnostic.open_float({ prefix = 42 }) ]]))
+ end)
+
+ it('works with the old signature', function()
+ eq({'1. Syntax error'}, exec_lua [[
+ local diagnostics = {
+ make_error("Syntax error", 0, 1, 0, 3),
+ }
+ vim.api.nvim_win_set_buf(0, diagnostic_bufnr)
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, diagnostics)
+ local float_bufnr, winnr = vim.diagnostic.open_float(0, { header = false })
+ local lines = vim.api.nvim_buf_get_lines(float_bufnr, 0, -1, false)
+ vim.api.nvim_win_close(winnr, true)
+ return lines
+ ]])
end)
end)
@@ -1588,5 +1932,27 @@ describe('vim.diagnostic', function()
return {show_called, hide_called}
]])
end)
+
+ it('triggers the autocommand when diagnostics are set', function()
+ eq(1, exec_lua [[
+ vim.g.diagnostic_autocmd_triggered = 0
+ vim.cmd('autocmd DiagnosticChanged * let g:diagnostic_autocmd_triggered = 1')
+ vim.api.nvim_buf_set_name(diagnostic_bufnr, "test | test")
+ vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
+ make_error('Diagnostic', 0, 0, 0, 0)
+ })
+ return vim.g.diagnostic_autocmd_triggered
+ ]])
+ end)
+
+ it('triggers the autocommand when diagnostics are cleared', function()
+ eq(1, exec_lua [[
+ vim.g.diagnostic_autocmd_triggered = 0
+ vim.cmd('autocmd DiagnosticChanged * let g:diagnostic_autocmd_triggered = 1')
+ vim.api.nvim_buf_set_name(diagnostic_bufnr, "test | test")
+ vim.diagnostic.reset(diagnostic_ns, diagnostic_bufnr)
+ return vim.g.diagnostic_autocmd_triggered
+ ]])
+ end)
end)
end)