mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	fix(diagnostic): escape special chars in file names (#16527)
Co-authored-by: zeertzjq <zeertzjq@outlook.com> Co-authored-by: Gregory Anders <greg@gpanders.com>
This commit is contained in:
		@@ -658,7 +658,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
 | 
			
		||||
@@ -1333,7 +1336,7 @@ 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
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1918,5 +1918,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)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user