Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7f8faac

Browse files
fix(diagnostic): use nvim_exec_autocmds to trigger DiagnosticChanged (#18205)
Use nvim_exec_autocmds to issue the DiagnosticChanged autocommand,rather than nvim_buf_call, which has some side effects when drawingstatuslines.(cherry picked from commit4a64ce1)Co-authored-by: Gregory Anders <greg@gpanders.com>
1 parent0302c35 commit7f8faac

File tree

2 files changed

+21
-22
lines changed

2 files changed

+21
-22
lines changed

‎runtime/lua/vim/diagnostic.lua‎

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -668,14 +668,10 @@ function M.set(namespace, bufnr, diagnostics, opts)
668668
M.show(namespace,bufnr,nil,opts)
669669
end
670670

671-
vim.api.nvim_buf_call(bufnr,function()
672-
vim.api.nvim_command(
673-
string.format(
674-
"doautocmd <nomodeline> DiagnosticChanged %s",
675-
vim.fn.fnameescape(vim.api.nvim_buf_get_name(bufnr))
676-
)
677-
)
678-
end)
671+
vim.api.nvim_exec_autocmds("DiagnosticChanged", {
672+
modeline=false,
673+
buffer=bufnr,
674+
})
679675
end
680676

681677
--- Get namespace metadata.
@@ -1382,14 +1378,10 @@ function M.reset(namespace, bufnr)
13821378
M.hide(iter_namespace,iter_bufnr)
13831379
end
13841380

1385-
vim.api.nvim_buf_call(iter_bufnr,function()
1386-
vim.api.nvim_command(
1387-
string.format(
1388-
"doautocmd <nomodeline> DiagnosticChanged %s",
1389-
vim.fn.fnameescape(vim.api.nvim_buf_get_name(iter_bufnr))
1390-
)
1391-
)
1392-
end)
1381+
vim.api.nvim_exec_autocmds("DiagnosticChanged", {
1382+
modeline=false,
1383+
buffer=iter_bufnr,
1384+
})
13931385
end
13941386
end
13951387

‎test/functional/lua/diagnostic_spec.lua‎

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,24 +1939,31 @@ describe('vim.diagnostic', function()
19391939
end)
19401940

19411941
it('triggers the autocommand when diagnostics are set',function()
1942-
eq(1,exec_lua[[
1942+
eq(true,exec_lua[[
1943+
-- Set a different buffer as current to test that <abuf> is being set properly in
1944+
-- DiagnosticChanged callbacks
1945+
local tmp = vim.api.nvim_create_buf(false, true)
1946+
vim.api.nvim_set_current_buf(tmp)
1947+
19431948
vim.g.diagnostic_autocmd_triggered = 0
1944-
vim.cmd('autocmd DiagnosticChanged * let g:diagnostic_autocmd_triggered =1')
1949+
vim.cmd('autocmd DiagnosticChanged * let g:diagnostic_autocmd_triggered =+expand("<abuf>")')
19451950
vim.api.nvim_buf_set_name(diagnostic_bufnr, "test | test")
19461951
vim.diagnostic.set(diagnostic_ns, diagnostic_bufnr, {
19471952
make_error('Diagnostic', 0, 0, 0, 0)
19481953
})
1949-
return vim.g.diagnostic_autocmd_triggered
1954+
return vim.g.diagnostic_autocmd_triggered == diagnostic_bufnr
19501955
]])
19511956
end)
19521957

19531958
it('triggers the autocommand when diagnostics are cleared',function()
1954-
eq(1,exec_lua[[
1959+
eq(true,exec_lua[[
1960+
local tmp = vim.api.nvim_create_buf(false, true)
1961+
vim.api.nvim_set_current_buf(tmp)
19551962
vim.g.diagnostic_autocmd_triggered = 0
1956-
vim.cmd('autocmd DiagnosticChanged * let g:diagnostic_autocmd_triggered =1')
1963+
vim.cmd('autocmd DiagnosticChanged * let g:diagnostic_autocmd_triggered =+expand("<abuf>")')
19571964
vim.api.nvim_buf_set_name(diagnostic_bufnr, "test | test")
19581965
vim.diagnostic.reset(diagnostic_ns, diagnostic_bufnr)
1959-
return vim.g.diagnostic_autocmd_triggered
1966+
return vim.g.diagnostic_autocmd_triggered == diagnostic_bufnr
19601967
]])
19611968
end)
19621969
end)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp