Fix HandleLSPDiagnostics buffer match logic.
To find the buffer corresponding to URIs reported by LSP the HandleLSPDiagnostics() method uses the built-in bufnr() function. From the documentation we learn that the first parameter of bufnr() is an expression, not a path. EclipseLSP will report project wide errors (e.g. gradle errors) that are not related to any actual source file with an URI that corresponds to the project root folder, e.g: file:///home/username/Projects/gradle-simple This URI will match any open buffer of files within the project root hiearchy, thus project-wide errors appear as part of every file within the project, e.g: file:///home/username/Projects/gradle-simple/src/main/java/Hello.java To fix this, this MR adds '^' to the beginning and '$' at the end of the URI path to force an exact match. This is how is recommended in vim help (see :h bufname).
This commit is contained in:
parent
67d49c75a8
commit
b41836130c
@ -31,7 +31,7 @@ endfunction
|
|||||||
function! s:HandleLSPDiagnostics(conn_id, response) abort
|
function! s:HandleLSPDiagnostics(conn_id, response) abort
|
||||||
let l:linter_name = s:lsp_linter_map[a:conn_id]
|
let l:linter_name = s:lsp_linter_map[a:conn_id]
|
||||||
let l:filename = ale#path#FromURI(a:response.params.uri)
|
let l:filename = ale#path#FromURI(a:response.params.uri)
|
||||||
let l:buffer = bufnr(l:filename)
|
let l:buffer = bufnr('^' . l:filename . '$')
|
||||||
let l:info = get(g:ale_buffer_info, l:buffer, {})
|
let l:info = get(g:ale_buffer_info, l:buffer, {})
|
||||||
|
|
||||||
if empty(l:info)
|
if empty(l:info)
|
||||||
|
Loading…
Reference in New Issue
Block a user