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}, \ ], \ )