summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Maurer <felix@felix-maurer.de>2022-04-01 10:13:27 +0200
committerGitHub <noreply@github.com>2022-04-01 17:13:27 +0900
commite81f005c78193b9475b359751e9fae21f65c1c2b (patch)
treeb2607c5b710f0b69efd50fa9289090779346bef6
parent80dcd648d389965603246c2c5a4554e3e4aa184c (diff)
downloadale-e81f005c78193b9475b359751e9fae21f65c1c2b.zip
Fix end line number when it exceeds the file (#4130)
If the end of the error exceeds the file, set it to the last line, similarly as it is done with the beginning of the error.
-rw-r--r--autoload/ale/engine.vim6
-rw-r--r--test/test_loclist_corrections.vader15
2 files changed, 14 insertions, 7 deletions
diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim
index 5b9b1fca..00789a2d 100644
--- a/autoload/ale/engine.vim
+++ b/autoload/ale/engine.vim
@@ -347,6 +347,12 @@ function! ale#engine#FixLocList(buffer, linter_name, from_other_source, loclist)
if has_key(l:old_item, 'end_lnum')
let l:item.end_lnum = str2nr(l:old_item.end_lnum)
+
+ " When the error ends after the end of the file, put it at the
+ " end. This is only done for the current buffer.
+ if l:item.bufnr == a:buffer && l:item.end_lnum > l:last_line_number
+ let l:item.end_lnum = l:last_line_number
+ endif
endif
if has_key(l:old_item, 'sub_type')
diff --git a/test/test_loclist_corrections.vader b/test/test_loclist_corrections.vader
index d53b1411..60b1eba7 100644
--- a/test/test_loclist_corrections.vader
+++ b/test/test_loclist_corrections.vader
@@ -124,6 +124,7 @@ Execute(FixLocList should set items with lines beyond the end to the last line):
\ 'text': 'a',
\ 'lnum': 10,
\ 'col': 0,
+ \ 'end_lnum': 10,
\ 'bufnr': bufnr('%'),
\ 'vcol': 0,
\ 'type': 'E',
@@ -135,7 +136,7 @@ Execute(FixLocList should set items with lines beyond the end to the last line):
\ bufnr('%'),
\ 'foobar',
\ 0,
- \ [{'text': 'a', 'lnum': 11}],
+ \ [{'text': 'a', 'lnum': 11, 'end_lnum': 12}],
\ )
Execute(FixLocList should move line 0 to line 1):
@@ -223,9 +224,9 @@ Execute(FixLocList should pass on end_lnum values):
\ [
\ {
\ 'text': 'a',
- \ 'lnum': 10,
+ \ 'lnum': 7,
\ 'col': 10,
- \ 'end_lnum': 13,
+ \ 'end_lnum': 10,
\ 'end_col': 12,
\ 'bufnr': bufnr('%'),
\ 'vcol': 0,
@@ -235,9 +236,9 @@ Execute(FixLocList should pass on end_lnum values):
\ },
\ {
\ 'text': 'a',
- \ 'lnum': 10,
+ \ 'lnum': 7,
\ 'col': 11,
- \ 'end_lnum': 13,
+ \ 'end_lnum': 10,
\ 'end_col': 12,
\ 'bufnr': bufnr('%'),
\ 'vcol': 0,
@@ -251,8 +252,8 @@ Execute(FixLocList should pass on end_lnum values):
\ 'foobar',
\ 0,
\ [
- \ {'text': 'a', 'lnum': '010', 'col': '010', 'end_col': '012', 'end_lnum': '013'},
- \ {'text': 'a', 'lnum': '010', 'col': '011', 'end_col': 12, 'end_lnum': 13},
+ \ {'text': 'a', 'lnum': '07', 'col': '010', 'end_col': '012', 'end_lnum': '010'},
+ \ {'text': 'a', 'lnum': '07', 'col': '011', 'end_col': 12, 'end_lnum': 10},
\ ],
\ )