summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/engine.vim6
-rw-r--r--plugin/ale.vim4
-rw-r--r--test/test_cursor_warnings.vader39
3 files changed, 49 insertions, 0 deletions
diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim
index bc834083..ffef76a9 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 1d7f77a5..90505f29 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 b12f2451..8d998a87 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]