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