diff options
author | Horacio Sanson <horacio@allm.net> | 2019-05-22 10:30:24 +0900 |
---|---|---|
committer | Horacio Sanson <horacio@allm.net> | 2019-05-22 10:30:24 +0900 |
commit | b41836130c9977317ba3f3ebc61daf05fc34f0da (patch) | |
tree | 72c1de271d31a3780e7c6b1b7c422bf8c4537f44 | |
parent | 67d49c75a819aa4e7ded97785a1014ba18f06e5d (diff) | |
download | ale-b41836130c9977317ba3f3ebc61daf05fc34f0da.zip |
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).
-rw-r--r-- | autoload/ale/lsp_linter.vim | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/autoload/ale/lsp_linter.vim b/autoload/ale/lsp_linter.vim index f70042dd..13471ab7 100644 --- a/autoload/ale/lsp_linter.vim +++ b/autoload/ale/lsp_linter.vim @@ -31,7 +31,7 @@ endfunction function! s:HandleLSPDiagnostics(conn_id, response) abort let l:linter_name = s:lsp_linter_map[a:conn_id] 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, {}) if empty(l:info) |