ale/autoload/ale/toggle.vim
2019-02-20 11:08:27 +09:00

101 lines
2.6 KiB
VimL

function! s:EnablePreamble() abort
" Set pattern options again, if enabled.
if get(g:, 'ale_pattern_options_enabled', 0)
call ale#pattern_options#SetOptions(bufnr(''))
endif
" Lint immediately, including running linters against the file.
call ale#Queue(0, 'lint_file')
endfunction
function! s:DisablePostamble() abort
" Remove highlights for the current buffer now.
if g:ale_set_highlights
call ale#highlight#UpdateHighlights()
endif
if g:ale_virtualtext_cursor
call ale#virtualtext#Clear()
endif
endfunction
function! ale#toggle#Toggle() abort
let g:ale_enabled = !get(g:, 'ale_enabled')
if g:ale_enabled
call s:EnablePreamble()
if g:ale_set_balloons
call ale#balloon#Enable()
endif
else
call ale#engine#CleanupEveryBuffer()
call s:DisablePostamble()
if exists('*ale#balloon#Disable')
call ale#balloon#Disable()
endif
endif
call ale#events#Init()
endfunction
function! ale#toggle#Enable() abort
if !g:ale_enabled
call ale#toggle#Toggle()
endif
endfunction
function! ale#toggle#Disable() abort
if g:ale_enabled
call ale#toggle#Toggle()
endif
endfunction
function! ale#toggle#Reset() abort
call ale#engine#CleanupEveryBuffer()
call ale#highlight#UpdateHighlights()
endfunction
function! ale#toggle#ToggleBuffer(buffer) abort
" Get the new value for the toggle.
let l:enabled = !getbufvar(a:buffer, 'ale_enabled', 1)
" Disabling ALE globally removes autocmd events, so we cannot enable
" linting locally when linting is disabled globally
if l:enabled && !g:ale_enabled
execute 'echom ''ALE cannot be enabled locally when disabled globally'''
return
endif
call setbufvar(a:buffer, 'ale_enabled', l:enabled)
if l:enabled
call s:EnablePreamble()
else
" Stop all jobs and clear the results for everything, and delete
" all of the data we stored for the buffer.
call ale#engine#Cleanup(a:buffer)
call s:DisablePostamble()
endif
endfunction
function! ale#toggle#EnableBuffer(buffer) abort
" ALE is enabled by default for all buffers.
if !getbufvar(a:buffer, 'ale_enabled', 1)
call ale#toggle#ToggleBuffer(a:buffer)
endif
endfunction
function! ale#toggle#DisableBuffer(buffer) abort
if getbufvar(a:buffer, 'ale_enabled', 1)
call ale#toggle#ToggleBuffer(a:buffer)
endif
endfunction
function! ale#toggle#ResetBuffer(buffer) abort
call ale#engine#Cleanup(a:buffer)
call ale#highlight#UpdateHighlights()
endfunction