From cad9fc19c65ddd0e20456ce345de81e6b03f331e Mon Sep 17 00:00:00 2001 From: w0rp Date: Sat, 15 Jul 2017 18:44:45 +0100 Subject: [PATCH] Fix #773 - Do not clear the loclist when closing the loclist window --- autoload/ale/engine.vim | 4 ++ plugin/ale.vim | 2 +- ...lts_not_cleared_when_opening_loclist.vader | 45 +++++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 test/test_results_not_cleared_when_opening_loclist.vader diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim index 6cde4bf..60cdf48 100644 --- a/autoload/ale/engine.vim +++ b/autoload/ale/engine.vim @@ -665,6 +665,10 @@ endfunction " clear the state of everything, and remove the Dictionary for managing " the buffer. function! ale#engine#Cleanup(buffer) abort + if !has_key(g:ale_buffer_info, a:buffer) + return + endif + call ale#engine#RunLinters(a:buffer, [], 1) call remove(g:ale_buffer_info, a:buffer) diff --git a/plugin/ale.vim b/plugin/ale.vim index 00c24ce..0fbfcb1 100644 --- a/plugin/ale.vim +++ b/plugin/ale.vim @@ -55,7 +55,7 @@ let g:ale_buffer_info = {} " This option prevents ALE autocmd commands from being run for particular " filetypes which can cause issues. -let g:ale_filetype_blacklist = ['nerdtree', 'unite', 'tags'] +let g:ale_filetype_blacklist = ['nerdtree', 'unite', 'tags', 'qf'] " This Dictionary configures which linters are enabled for which languages. let g:ale_linters = get(g:, 'ale_linters', {}) diff --git a/test/test_results_not_cleared_when_opening_loclist.vader b/test/test_results_not_cleared_when_opening_loclist.vader new file mode 100644 index 0000000..07d3d30 --- /dev/null +++ b/test/test_results_not_cleared_when_opening_loclist.vader @@ -0,0 +1,45 @@ +Before: + Save g:ale_run_synchronously + + let g:ale_run_synchronously = 1 + + function! TestCallback(buffer, output) + return [ + \ { + \ 'lnum': 1, + \ 'text': 'Something is wrong', + \ }, + \] + endfunction + + call ale#linter#Define('foobar', { + \ 'name': 'testlinter', + \ 'callback': 'TestCallback', + \ 'executable': 'true', + \ 'command': 'true', + \ 'read_buffer': 0, + \}) + +After: + Restore + + delfunction TestCallback + let g:ale_buffer_info = {} + call ale#linter#Reset() + +Given foobar (Some file): + abc + +Execute(The loclist shouldn't be cleared when opening the loclist): + call ale#Lint() + + AssertEqual 1, len(getloclist(0)) + + " The cleanup function is called when the loclist window is closed. + " If some cleanup is done for this buffer, for which nothing is wrong, + " then the loclist for the window, which is the same window as the window + " we are checking, will be cleared. + :lopen + :q + + AssertEqual 1, len(getloclist(0))