From 0e50a7d2783fb82ce4abf9ad6c58c5a035d9d047 Mon Sep 17 00:00:00 2001 From: w0rp Date: Thu, 2 Mar 2017 23:36:31 +0000 Subject: [PATCH] Fix #373 - echo the cursor message after lint cycles or when leaving Insert mode --- autoload/ale/engine.vim | 6 +++++ plugin/ale.vim | 4 ++++ test/test_cursor_warnings.vader | 39 +++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim index bc83408..ffef76a 100644 --- a/autoload/ale/engine.vim +++ b/autoload/ale/engine.vim @@ -268,6 +268,12 @@ function! ale#engine#SetResults(buffer, loclist) abort if g:ale_set_highlights call ale#highlight#SetHighlights(a:buffer, a:loclist) endif + + if g:ale_echo_cursor + " Try and echo the warning now. + " This will only do something meaningful if we're in normal mode. + call ale#cursor#EchoCursorWarning() + endif endfunction function! s:SetExitCode(job, exit_code) abort diff --git a/plugin/ale.vim b/plugin/ale.vim index 1d7f77a..90505f2 100644 --- a/plugin/ale.vim +++ b/plugin/ale.vim @@ -166,6 +166,10 @@ function! s:ALEInitAuGroups() abort autocmd! if g:ale_enabled && g:ale_echo_cursor autocmd CursorMoved,CursorHold * call ale#cursor#EchoCursorWarningWithDelay() + " Look for a warning to echo as soon as we leave Insert mode. + " The script's position variable used when moving the cursor will + " not be changed here. + autocmd InsertLeave * call ale#cursor#EchoCursorWarning() endif augroup END diff --git a/test/test_cursor_warnings.vader b/test/test_cursor_warnings.vader index b12f245..8d998a8 100644 --- a/test/test_cursor_warnings.vader +++ b/test/test_cursor_warnings.vader @@ -36,7 +36,16 @@ Before: \ }, \} + " Turn off other features, we only care about this one feature in this test. + let g:ale_set_loclist = 0 + let g:ale_set_signs = 0 + let g:ale_set_highlights = 0 + After: + let g:ale_set_loclist = 1 + let g:ale_set_signs = 1 + let g:ale_set_highlights = 1 + unlet! g:output unlet! g:lines let g:ale_buffer_info = {} @@ -84,3 +93,33 @@ Then(Check the cursor output): let g:lines = split(g:output, "\n") AssertEqual 'Missing radix parameter (radix)', g:lines[-1] + +Execute(Set results for a lint cycle, with the cursor on line 1): + :1 + call ale#engine#SetResults( + \ bufnr('%'), + \ g:ale_buffer_info[bufnr('%')].loclist, + \) + +Then(Check the cursor output): + redir => g:output + :mess + redir END + + let g:lines = split(g:output, "\n") + + AssertEqual 'Missing semicolon. (semi)', g:lines[-1] + +Execute(Simulate leaving insert mode on line 2): + :2 + normal 16h + doautocmd InsertLeave + +Then(Check the cursor output): + redir => g:output + :mess + redir END + + let g:lines = split(g:output, "\n") + + AssertEqual 'Infix operators must be spaced. (space-infix-ops)', g:lines[-1]