fix(diagnostic): escape special chars in file names (#16588)

This commit is contained in:
github-actions[bot] 2021-12-08 19:20:55 -07:00 committed by GitHub
parent 5dcf2c77a9
commit beac24d6f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 2 deletions

View File

@ -655,7 +655,10 @@ function M.set(namespace, bufnr, diagnostics, opts)
vim.api.nvim_buf_call(bufnr, function()
vim.api.nvim_command(
string.format("doautocmd <nomodeline> DiagnosticChanged %s", vim.api.nvim_buf_get_name(bufnr))
string.format(
"doautocmd <nomodeline> DiagnosticChanged %s",
vim.fn.fnameescape(vim.api.nvim_buf_get_name(bufnr))
)
)
end)
end
@ -1339,7 +1342,10 @@ function M.reset(namespace, bufnr)
end
vim.api.nvim_command(
string.format("doautocmd <nomodeline> DiagnosticChanged %s", vim.api.nvim_buf_get_name(bufnr))
string.format(
"doautocmd <nomodeline> DiagnosticChanged %s",
vim.fn.fnameescape(vim.api.nvim_buf_get_name(bufnr))
)
)
end

View File

@ -1932,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)