From d6d6fcf928b8928fe0461e87cee354baf5b2d66a Mon Sep 17 00:00:00 2001 From: Andrey Popp <8mayday@gmail.com> Date: Sat, 19 Jan 2019 18:50:21 +0300 Subject: [PATCH 1/2] End position in LSP range is exclusive From LSP spec: > A range in a text document expressed as (zero-based) start and end > positions. A range is comparable to a selection in an editor. Therefore > the end position is exclusive. --- autoload/ale/lsp/response.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/ale/lsp/response.vim b/autoload/ale/lsp/response.vim index 08b36808..5e62a29a 100644 --- a/autoload/ale/lsp/response.vim +++ b/autoload/ale/lsp/response.vim @@ -33,7 +33,7 @@ function! ale#lsp#response#ReadDiagnostics(response) abort \ 'lnum': l:diagnostic.range.start.line + 1, \ 'col': l:diagnostic.range.start.character + 1, \ 'end_lnum': l:diagnostic.range.end.line + 1, - \ 'end_col': l:diagnostic.range.end.character + 1, + \ 'end_col': l:diagnostic.range.end.character, \} if l:severity == s:SEVERITY_WARNING From c2e4b553d0a60c642a3e78c07af37f1c4aa8c220 Mon Sep 17 00:00:00 2001 From: Andrey Popp <8mayday@gmail.com> Date: Mon, 21 Jan 2019 18:36:52 +0300 Subject: [PATCH 2/2] Update tests --- test/lsp/test_read_lsp_diagnostics.vader | 18 +++++++++--------- test/test_ignoring_linters.vader | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/lsp/test_read_lsp_diagnostics.vader b/test/lsp/test_read_lsp_diagnostics.vader index a5c5ded3..c197e0c6 100644 --- a/test/lsp/test_read_lsp_diagnostics.vader +++ b/test/lsp/test_read_lsp_diagnostics.vader @@ -17,7 +17,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should handle errors): \ 'lnum': 3, \ 'col': 11, \ 'end_lnum': 5, - \ 'end_col': 16, + \ 'end_col': 15, \ 'code': 'some-error', \ } \ ], @@ -38,7 +38,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should handle warnings): \ 'lnum': 2, \ 'col': 4, \ 'end_lnum': 2, - \ 'end_col': 4, + \ 'end_col': 3, \ 'code': 'some-warning', \ } \ ], @@ -59,7 +59,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should treat messages with missing se \ 'lnum': 3, \ 'col': 11, \ 'end_lnum': 5, - \ 'end_col': 16, + \ 'end_col': 15, \ 'code': 'some-error', \ } \ ], @@ -79,7 +79,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should handle messages without codes) \ 'lnum': 3, \ 'col': 11, \ 'end_lnum': 5, - \ 'end_col': 16, + \ 'end_col': 15, \ } \ ], \ ale#lsp#response#ReadDiagnostics({'params': {'uri': 'filename.ts', 'diagnostics': [ @@ -98,7 +98,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should include sources in detail): \ 'lnum': 10, \ 'col': 15, \ 'end_lnum': 12, - \ 'end_col': 23, + \ 'end_col': 22, \ } \ ], \ ale#lsp#response#ReadDiagnostics({'params': {'uri': 'filename.ts', 'diagnostics': [ @@ -117,7 +117,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should consider -1 to be a meaningles \ 'lnum': 3, \ 'col': 11, \ 'end_lnum': 5, - \ 'end_col': 16, + \ 'end_col': 15, \ } \ ], \ ale#lsp#response#ReadDiagnostics({'params': {'uri': 'filename.ts', 'diagnostics': [ @@ -136,7 +136,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should handle multiple messages): \ 'lnum': 1, \ 'col': 3, \ 'end_lnum': 1, - \ 'end_col': 3, + \ 'end_col': 2, \ }, \ { \ 'type': 'W', @@ -144,7 +144,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should handle multiple messages): \ 'lnum': 2, \ 'col': 5, \ 'end_lnum': 2, - \ 'end_col': 5, + \ 'end_col': 4, \ }, \ ], \ ale#lsp#response#ReadDiagnostics({'params': {'uri': 'filename.ts', 'diagnostics': [ @@ -167,7 +167,7 @@ Execute(ale#lsp#response#ReadDiagnostics() should use relatedInformation for det \ 'lnum': 1, \ 'col': 3, \ 'end_lnum': 1, - \ 'end_col': 3, + \ 'end_col': 2, \ 'detail': "Something went wrong!\n/tmp/someotherfile.txt:43:80:\n\tmight be this" \ } \ ], diff --git a/test/test_ignoring_linters.vader b/test/test_ignoring_linters.vader index 866f9e0d..32eae954 100644 --- a/test/test_ignoring_linters.vader +++ b/test/test_ignoring_linters.vader @@ -242,7 +242,7 @@ Execute(Buffer ignore lists should be applied for LSP linters): \ 'lnum': 1, \ 'col': 10, \ 'type': 'E', - \ 'end_col': 10, + \ 'end_col': 9, \ 'end_lnum': 1, \ 'text': 'x', \ }