2017-02-13 00:18:51 +00:00
|
|
|
Before:
|
|
|
|
function! GenerateResults(buffer, output)
|
|
|
|
return [
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 1,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ 'text': 'foo',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 2,
|
|
|
|
\ 'col': 1,
|
|
|
|
\ 'type': 'W',
|
|
|
|
\ 'text': 'bar',
|
|
|
|
\ },
|
|
|
|
\ {
|
|
|
|
\ 'lnum': 3,
|
|
|
|
\ 'col': 5,
|
|
|
|
\ 'type': 'E',
|
|
|
|
\ 'text': 'wat',
|
|
|
|
\ },
|
|
|
|
\]
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
call ale#linter#Define('testft', {
|
|
|
|
\ 'name': 'x',
|
|
|
|
\ 'executable': 'echo',
|
|
|
|
\ 'command': 'echo',
|
|
|
|
\ 'callback': 'GenerateResults',
|
|
|
|
\})
|
2017-05-06 15:20:39 +00:00
|
|
|
highlight link SomeOtherGroup SpellBad
|
2017-02-13 00:18:51 +00:00
|
|
|
|
|
|
|
After:
|
|
|
|
delfunction GenerateResults
|
|
|
|
call ale#linter#Reset()
|
|
|
|
let g:ale_buffer_info = {}
|
2017-03-14 20:26:44 +00:00
|
|
|
call clearmatches()
|
2017-05-06 15:20:39 +00:00
|
|
|
highlight clear SomeOtherGroup
|
2017-02-13 00:18:51 +00:00
|
|
|
|
|
|
|
Given testft(A Javscript file with warnings/errors):
|
|
|
|
foo
|
|
|
|
bar
|
|
|
|
baz wat
|
2017-03-14 20:26:44 +00:00
|
|
|
line four
|
2017-02-13 00:18:51 +00:00
|
|
|
|
|
|
|
Execute(Highlights should be set when a linter runs):
|
|
|
|
call ale#Lint()
|
|
|
|
call ale#engine#WaitForJobs(2000)
|
|
|
|
|
|
|
|
AssertEqual
|
|
|
|
\ [
|
|
|
|
\ {'group': 'ALEError', 'id': 4, 'priority': 10, 'pos1': [1, 1, 1]},
|
|
|
|
\ {'group': 'ALEWarning', 'id': 5, 'priority': 10, 'pos1': [2, 1, 1]},
|
|
|
|
\ {'group': 'ALEError', 'id': 6, 'priority': 10, 'pos1': [3, 5, 1]}
|
|
|
|
\ ],
|
|
|
|
\ getmatches()
|
2017-03-12 22:46:33 +00:00
|
|
|
|
|
|
|
AssertEqual [4, 5, 6], map(copy(g:ale_buffer_info[bufnr('')].loclist), 'v:val.match_id')
|
2017-03-14 20:26:44 +00:00
|
|
|
|
|
|
|
Execute(Existing highlights should be kept):
|
|
|
|
call matchaddpos('ALEError', [[1, 2, 1]], 10, 347)
|
|
|
|
call matchaddpos('ALEWarning', [[2, 2, 1]], 10, 348)
|
|
|
|
|
|
|
|
call ale#highlight#SetHighlights(bufnr('%'), [
|
|
|
|
\ {'bufnr': bufnr('%'), 'match_id': 347, 'type': 'E', 'lnum': 1, 'col': 2},
|
|
|
|
\ {'bufnr': bufnr('%'), 'match_id': 348, 'type': 'W', 'lnum': 2, 'col': 2},
|
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 3, 'col': 2},
|
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'W', 'lnum': 4, 'col': 1},
|
|
|
|
\])
|
|
|
|
|
|
|
|
AssertEqual
|
|
|
|
\ [
|
|
|
|
\ {'group': 'ALEError', 'id': 347, 'priority': 10, 'pos1': [1, 2, 1]},
|
|
|
|
\ {'group': 'ALEWarning', 'id': 348, 'priority': 10, 'pos1': [2, 2, 1]},
|
|
|
|
\ {'group': 'ALEError', 'id': 7, 'priority': 10, 'pos1': [3, 2, 1]},
|
|
|
|
\ {'group': 'ALEWarning', 'id': 8, 'priority': 10, 'pos1': [4, 1, 1]},
|
|
|
|
\ ],
|
|
|
|
\ getmatches()
|
2017-04-19 21:55:06 +00:00
|
|
|
|
|
|
|
" This test is important for preventing ALE from showing highlights for
|
|
|
|
" the wrong files.
|
|
|
|
Execute(Highlights set by ALE should be removed when buffer cleanup is done):
|
|
|
|
call ale#engine#InitBufferInfo(bufnr('%'))
|
|
|
|
|
|
|
|
call ale#highlight#SetHighlights(bufnr('%'), [
|
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 3, 'col': 2},
|
|
|
|
\])
|
|
|
|
|
|
|
|
AssertEqual
|
|
|
|
\ [{'group': 'ALEError', 'id': 9, 'priority': 10, 'pos1': [3, 2, 1]}],
|
|
|
|
\ getmatches()
|
|
|
|
|
|
|
|
call ale#cleanup#Buffer(bufnr('%'))
|
|
|
|
|
|
|
|
AssertEqual [], getmatches()
|
2017-05-03 22:27:42 +00:00
|
|
|
|
|
|
|
Execute(Highlights should be cleared when buffers are hidden):
|
|
|
|
call ale#engine#InitBufferInfo(bufnr('%'))
|
2017-05-07 18:30:19 +00:00
|
|
|
let g:ale_buffer_info[bufnr('%')].loclist = [
|
2017-05-03 22:27:42 +00:00
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 3, 'col': 2},
|
2017-05-07 18:30:19 +00:00
|
|
|
\]
|
|
|
|
call ale#highlight#SetHighlights(
|
|
|
|
\ bufnr('%'),
|
|
|
|
\ g:ale_buffer_info[bufnr('%')].loclist
|
|
|
|
\)
|
2017-05-03 22:27:42 +00:00
|
|
|
|
|
|
|
AssertEqual 1, len(getmatches()), 'The highlights weren''t initially set!'
|
|
|
|
|
|
|
|
call ale#highlight#BufferHidden(bufnr('%'))
|
|
|
|
|
|
|
|
AssertEqual 0, len(getmatches()), 'The highlights weren''t cleared!'
|
|
|
|
|
|
|
|
call ale#highlight#UpdateHighlights()
|
|
|
|
|
|
|
|
AssertEqual 1, len(getmatches()), 'The highlights weren''t set again!'
|
2017-05-06 15:20:39 +00:00
|
|
|
|
|
|
|
Execute(Only ALE highlights should be restored when buffers are restored):
|
|
|
|
call ale#engine#InitBufferInfo(bufnr('%'))
|
2017-05-07 18:30:19 +00:00
|
|
|
let g:ale_buffer_info[bufnr('%')].loclist = [
|
2017-05-06 15:20:39 +00:00
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 3, 'col': 2},
|
2017-05-07 18:30:19 +00:00
|
|
|
\]
|
|
|
|
call ale#highlight#SetHighlights(
|
|
|
|
\ bufnr('%'),
|
|
|
|
\ g:ale_buffer_info[bufnr('%')].loclist
|
|
|
|
\)
|
2017-05-06 15:20:39 +00:00
|
|
|
|
|
|
|
call matchaddpos('SomeOtherGroup', [[1, 1, 1]])
|
|
|
|
|
|
|
|
" We should have one more match here.
|
|
|
|
AssertEqual 2, len(getmatches()), 'The highlights weren''t initially set!'
|
|
|
|
|
|
|
|
call ale#highlight#BufferHidden(bufnr('%'))
|
|
|
|
|
|
|
|
AssertEqual 0, len(getmatches()), 'The highlights weren''t cleared!'
|
|
|
|
|
|
|
|
call ale#highlight#UpdateHighlights()
|
|
|
|
|
|
|
|
" Only our matches should appear again.
|
|
|
|
AssertEqual 1, len(getmatches()), 'The highlights weren''t set again!'
|
2017-05-16 17:12:49 +00:00
|
|
|
|
|
|
|
Execute(Higlight end columns should set an appropriate size):
|
|
|
|
call ale#highlight#SetHighlights(bufnr('%'), [
|
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'E', 'lnum': 3, 'col': 2, 'end_col': 5},
|
|
|
|
\ {'bufnr': bufnr('%'), 'type': 'W', 'lnum': 4, 'col': 1, 'end_col': 5},
|
|
|
|
\])
|
|
|
|
|
|
|
|
AssertEqual
|
|
|
|
\ [
|
2017-05-16 18:46:19 +00:00
|
|
|
\ {'group': 'ALEError', 'id': 15, 'priority': 10, 'pos1': [3, 2, 4]},
|
|
|
|
\ {'group': 'ALEWarning', 'id': 16, 'priority': 10, 'pos1': [4, 1, 5]},
|
2017-05-16 17:12:49 +00:00
|
|
|
\ ],
|
|
|
|
\ getmatches()
|