1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-02-03 03:00:04 +08:00

Merge pull request #1103 from sei40kr/feature/ale-fix

Fix an issue occurd in ALE-enabled environment
This commit is contained in:
Wang Shidong 2017-12-10 19:27:59 +08:00 committed by GitHub
commit 321f801e42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -21,6 +21,9 @@ endfunction
function! SpaceVim#layers#checkers#config() abort
let g:neomake_cursormoved_delay = get(g:, 'neomake_cursormoved_delay', 300)
let g:ale_echo_delay = get(g:, 'ale_echo_delay', 300)
call SpaceVim#mapping#space#def('nnoremap', ['e', 'c'], 'call call('
\ . string(s:_function('s:clear_errors')) . ', [])',
\ 'clear all errors', 1)
@ -41,31 +44,37 @@ function! SpaceVim#layers#checkers#config() abort
augroup SpaceVim_layer_checker
autocmd!
if g:spacevim_enable_neomake
autocmd User NeomakeFinished nested let &l:statusline = SpaceVim#layers#core#statusline#get(1)
elseif g:spacevim_enable_ale
autocmd User ALELint let &l:statusline = SpaceVim#layers#core#statusline#get(1)
endif
autocmd User NeomakeFinished nested
\ let &l:statusline = SpaceVim#layers#core#statusline#get(1)
" when move cursor, the error message will be shown below current line
" after a delay
autocmd CursorMoved * call <SID>cursor_move_delay()
autocmd CursorMoved * call <SID>neomake_cursor_move_delay()
" when switch to Insert mode, stop timer and clear the signature
if exists('##CmdLineEnter')
autocmd InsertEnter,WinLeave,CmdLineEnter * call <SID>signatures_clear() | redraw
autocmd InsertEnter,WinLeave,CmdLineEnter *
\ call <SID>neomake_signatures_clear() | redraw
else
autocmd InsertEnter,WinLeave * call <SID>signatures_clear() | redraw
autocmd InsertEnter,WinLeave * call <SID>neomake_signatures_clear() | redraw
endif
elseif g:spacevim_enable_ale
autocmd User ALELint
\ let &l:statusline = SpaceVim#layers#core#statusline#get(1)
endif
augroup END
endfunction
function! s:cursor_move_delay() abort
call s:signatures_clear()
let s:cursormoved_timer = timer_start(get(g:, 'neomake_cursormoved_delay', 300), function('s:signatures_current_error'))
function! s:neomake_cursor_move_delay() abort
call s:neomake_signatures_clear()
let s:neomake_cursormoved_timer = timer_start(g:neomake_cursormoved_delay,
\ function('s:neomake_signatures_current_error'))
endfunction
let s:last_echoed_error = ''
let s:clv = &conceallevel
function! s:signatures_current_error(...) abort
call s:signatures_clear()
function! s:neomake_signatures_current_error(...) abort
call s:neomake_signatures_clear()
let message = neomake#GetCurrentErrorMsg()
if empty(message)
if exists('s:last_echoed_error')
@ -85,9 +94,9 @@ function! s:signatures_current_error(...) abort
call s:SIG.info(line('.') + 1, 1, message)
endfunction
function! s:signatures_clear() abort
if exists('s:cursormoved_timer') && s:cursormoved_timer != 0
call timer_stop(s:cursormoved_timer)
function! s:neomake_signatures_clear() abort
if exists('s:neomake_cursormoved_timer') && s:neomake_cursormoved_timer != 0
call timer_stop(s:neomake_cursormoved_timer)
endif
let s:last_echoed_error = ''
let &conceallevel = s:clv
@ -104,13 +113,15 @@ endfunction
function! s:error_transient_state() abort
if g:spacevim_enable_neomake
let has_errors = neomake#statusline#LoclistCounts()
let num_errors = neomake#statusline#LoclistCounts()
elseif g:spacevim_enable_ale
let has_errors = ''
let counts = ale#statusline#Count(buffer_name('%'))
let num_errors = counts.error + counts.warning + counts.style_error
\ + counts.style_warning
else
let has_errors = ''
let num_errors = 0
endif
if empty(has_errors)
if empty(num_errors)
echo 'no buffers contain error message locations'
return
endif