#817 Move code for toggling ALE to its own file
This commit is contained in:
parent
6e681d9066
commit
ea3a8e3c62
140
autoload/ale/toggle.vim
Normal file
140
autoload/ale/toggle.vim
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
function! ale#toggle#InitAuGroups() abort
|
||||||
|
" This value used to be a Boolean as a Number, and is now a String.
|
||||||
|
let l:text_changed = '' . g:ale_lint_on_text_changed
|
||||||
|
|
||||||
|
augroup ALEPatternOptionsGroup
|
||||||
|
autocmd!
|
||||||
|
if g:ale_enabled && g:ale_pattern_options_enabled
|
||||||
|
autocmd BufEnter,BufRead * call ale#pattern_options#SetOptions()
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup ALERunOnTextChangedGroup
|
||||||
|
autocmd!
|
||||||
|
if g:ale_enabled
|
||||||
|
if l:text_changed is? 'always' || l:text_changed is# '1'
|
||||||
|
autocmd TextChanged,TextChangedI * call ale#Queue(g:ale_lint_delay)
|
||||||
|
elseif l:text_changed is? 'normal'
|
||||||
|
autocmd TextChanged * call ale#Queue(g:ale_lint_delay)
|
||||||
|
elseif l:text_changed is? 'insert'
|
||||||
|
autocmd TextChangedI * call ale#Queue(g:ale_lint_delay)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup ALERunOnEnterGroup
|
||||||
|
autocmd!
|
||||||
|
if g:ale_enabled
|
||||||
|
" Handle everything that needs to happen when buffers are entered.
|
||||||
|
autocmd BufEnter * call ale#events#EnterEvent(str2nr(expand('<abuf>')))
|
||||||
|
endif
|
||||||
|
if g:ale_enabled && g:ale_lint_on_enter
|
||||||
|
autocmd BufWinEnter,BufRead * call ale#Queue(0, 'lint_file', str2nr(expand('<abuf>')))
|
||||||
|
" Track when the file is changed outside of Vim.
|
||||||
|
autocmd FileChangedShellPost * call ale#events#FileChangedEvent(str2nr(expand('<abuf>')))
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup ALERunOnFiletypeChangeGroup
|
||||||
|
autocmd!
|
||||||
|
if g:ale_enabled && g:ale_lint_on_filetype_changed
|
||||||
|
" Only start linting if the FileType actually changes after
|
||||||
|
" opening a buffer. The FileType will fire when buffers are opened.
|
||||||
|
autocmd FileType * call ale#events#FileTypeEvent(
|
||||||
|
\ str2nr(expand('<abuf>')),
|
||||||
|
\ expand('<amatch>')
|
||||||
|
\)
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup ALERunOnSaveGroup
|
||||||
|
autocmd!
|
||||||
|
if (g:ale_enabled && g:ale_lint_on_save) || g:ale_fix_on_save
|
||||||
|
autocmd BufWritePost * call ale#events#SaveEvent(str2nr(expand('<abuf>')))
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup ALERunOnInsertLeave
|
||||||
|
autocmd!
|
||||||
|
if g:ale_enabled && g:ale_lint_on_insert_leave
|
||||||
|
autocmd InsertLeave * call ale#Queue(0)
|
||||||
|
endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
augroup ALECursorGroup
|
||||||
|
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
|
||||||
|
|
||||||
|
if !g:ale_enabled
|
||||||
|
if !g:ale_fix_on_save
|
||||||
|
augroup! ALERunOnSaveGroup
|
||||||
|
endif
|
||||||
|
|
||||||
|
augroup! ALEPatternOptionsGroup
|
||||||
|
augroup! ALERunOnTextChangedGroup
|
||||||
|
augroup! ALERunOnEnterGroup
|
||||||
|
augroup! ALERunOnInsertLeave
|
||||||
|
augroup! ALECursorGroup
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! ale#toggle#Toggle() abort
|
||||||
|
let g:ale_enabled = !get(g:, 'ale_enabled')
|
||||||
|
|
||||||
|
if g:ale_enabled
|
||||||
|
" Set pattern options again, if enabled.
|
||||||
|
if g:ale_pattern_options_enabled
|
||||||
|
call ale#pattern_options#SetOptions()
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Lint immediately, including running linters against the file.
|
||||||
|
call ale#Queue(0, 'lint_file')
|
||||||
|
|
||||||
|
if g:ale_set_balloons
|
||||||
|
call ale#balloon#Enable()
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
for l:key in keys(g:ale_buffer_info)
|
||||||
|
" The key could be a filename or a buffer number, so try and
|
||||||
|
" convert it to a number. We need a number for the other
|
||||||
|
" functions.
|
||||||
|
let l:buffer = str2nr(l:key)
|
||||||
|
|
||||||
|
if l:buffer > 0
|
||||||
|
" Stop all jobs and clear the results for everything, and delete
|
||||||
|
" all of the data we stored for the buffer.
|
||||||
|
call ale#engine#Cleanup(l:buffer)
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
" Remove highlights for the current buffer now.
|
||||||
|
if g:ale_set_highlights
|
||||||
|
call ale#highlight#UpdateHighlights()
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:ale_set_balloons
|
||||||
|
call ale#balloon#Disable()
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
call ale#toggle#InitAuGroups()
|
||||||
|
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
|
140
plugin/ale.vim
140
plugin/ale.vim
@ -201,137 +201,6 @@ call ale#Set('completion_enabled', 0)
|
|||||||
call ale#Set('completion_delay', 100)
|
call ale#Set('completion_delay', 100)
|
||||||
call ale#Set('completion_max_suggestions', 50)
|
call ale#Set('completion_max_suggestions', 50)
|
||||||
|
|
||||||
function! ALEInitAuGroups() abort
|
|
||||||
" This value used to be a Boolean as a Number, and is now a String.
|
|
||||||
let l:text_changed = '' . g:ale_lint_on_text_changed
|
|
||||||
|
|
||||||
augroup ALEPatternOptionsGroup
|
|
||||||
autocmd!
|
|
||||||
if g:ale_enabled && g:ale_pattern_options_enabled
|
|
||||||
autocmd BufEnter,BufRead * call ale#pattern_options#SetOptions()
|
|
||||||
endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup ALERunOnTextChangedGroup
|
|
||||||
autocmd!
|
|
||||||
if g:ale_enabled
|
|
||||||
if l:text_changed is? 'always' || l:text_changed is# '1'
|
|
||||||
autocmd TextChanged,TextChangedI * call ale#Queue(g:ale_lint_delay)
|
|
||||||
elseif l:text_changed is? 'normal'
|
|
||||||
autocmd TextChanged * call ale#Queue(g:ale_lint_delay)
|
|
||||||
elseif l:text_changed is? 'insert'
|
|
||||||
autocmd TextChangedI * call ale#Queue(g:ale_lint_delay)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup ALERunOnEnterGroup
|
|
||||||
autocmd!
|
|
||||||
if g:ale_enabled
|
|
||||||
" Handle everything that needs to happen when buffers are entered.
|
|
||||||
autocmd BufEnter * call ale#events#EnterEvent(str2nr(expand('<abuf>')))
|
|
||||||
endif
|
|
||||||
if g:ale_enabled && g:ale_lint_on_enter
|
|
||||||
autocmd BufWinEnter,BufRead * call ale#Queue(0, 'lint_file', str2nr(expand('<abuf>')))
|
|
||||||
" Track when the file is changed outside of Vim.
|
|
||||||
autocmd FileChangedShellPost * call ale#events#FileChangedEvent(str2nr(expand('<abuf>')))
|
|
||||||
endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup ALERunOnFiletypeChangeGroup
|
|
||||||
autocmd!
|
|
||||||
if g:ale_enabled && g:ale_lint_on_filetype_changed
|
|
||||||
" Only start linting if the FileType actually changes after
|
|
||||||
" opening a buffer. The FileType will fire when buffers are opened.
|
|
||||||
autocmd FileType * call ale#events#FileTypeEvent(
|
|
||||||
\ str2nr(expand('<abuf>')),
|
|
||||||
\ expand('<amatch>')
|
|
||||||
\)
|
|
||||||
endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup ALERunOnSaveGroup
|
|
||||||
autocmd!
|
|
||||||
if (g:ale_enabled && g:ale_lint_on_save) || g:ale_fix_on_save
|
|
||||||
autocmd BufWritePost * call ale#events#SaveEvent(str2nr(expand('<abuf>')))
|
|
||||||
endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup ALERunOnInsertLeave
|
|
||||||
autocmd!
|
|
||||||
if g:ale_enabled && g:ale_lint_on_insert_leave
|
|
||||||
autocmd InsertLeave * call ale#Queue(0)
|
|
||||||
endif
|
|
||||||
augroup END
|
|
||||||
|
|
||||||
augroup ALECursorGroup
|
|
||||||
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
|
|
||||||
|
|
||||||
if !g:ale_enabled
|
|
||||||
if !g:ale_fix_on_save
|
|
||||||
augroup! ALERunOnSaveGroup
|
|
||||||
endif
|
|
||||||
|
|
||||||
augroup! ALEPatternOptionsGroup
|
|
||||||
augroup! ALERunOnTextChangedGroup
|
|
||||||
augroup! ALERunOnEnterGroup
|
|
||||||
augroup! ALERunOnInsertLeave
|
|
||||||
augroup! ALECursorGroup
|
|
||||||
endif
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
function! s:ALEToggle() abort
|
|
||||||
let g:ale_enabled = !get(g:, 'ale_enabled')
|
|
||||||
|
|
||||||
if g:ale_enabled
|
|
||||||
" Set pattern options again, if enabled.
|
|
||||||
if g:ale_pattern_options_enabled
|
|
||||||
call ale#pattern_options#SetOptions()
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Lint immediately, including running linters against the file.
|
|
||||||
call ale#Queue(0, 'lint_file')
|
|
||||||
|
|
||||||
if g:ale_set_balloons
|
|
||||||
call ale#balloon#Enable()
|
|
||||||
endif
|
|
||||||
else
|
|
||||||
for l:key in keys(g:ale_buffer_info)
|
|
||||||
" The key could be a filename or a buffer number, so try and
|
|
||||||
" convert it to a number. We need a number for the other
|
|
||||||
" functions.
|
|
||||||
let l:buffer = str2nr(l:key)
|
|
||||||
|
|
||||||
if l:buffer > 0
|
|
||||||
" Stop all jobs and clear the results for everything, and delete
|
|
||||||
" all of the data we stored for the buffer.
|
|
||||||
call ale#engine#Cleanup(l:buffer)
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
|
|
||||||
" Remove highlights for the current buffer now.
|
|
||||||
if g:ale_set_highlights
|
|
||||||
call ale#highlight#UpdateHighlights()
|
|
||||||
endif
|
|
||||||
|
|
||||||
if g:ale_set_balloons
|
|
||||||
call ale#balloon#Disable()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
call ALEInitAuGroups()
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
call ALEInitAuGroups()
|
|
||||||
|
|
||||||
if g:ale_set_balloons
|
if g:ale_set_balloons
|
||||||
call ale#balloon#Enable()
|
call ale#balloon#Enable()
|
||||||
endif
|
endif
|
||||||
@ -352,9 +221,9 @@ command! -bar ALELast :call ale#loclist_jumping#JumpToIndex(-1)
|
|||||||
command! -bar ALEDetail :call ale#cursor#ShowCursorDetail()
|
command! -bar ALEDetail :call ale#cursor#ShowCursorDetail()
|
||||||
|
|
||||||
" Define commands for turning ALE on or off.
|
" Define commands for turning ALE on or off.
|
||||||
command! -bar ALEToggle :call s:ALEToggle()
|
command! -bar ALEToggle :call ale#toggle#Toggle()
|
||||||
command! -bar ALEEnable :if !g:ale_enabled | ALEToggle | endif
|
command! -bar ALEEnable :call ale#toggle#Enable()
|
||||||
command! -bar ALEDisable :if g:ale_enabled | ALEToggle | endif
|
command! -bar ALEDisable :call ale#toggle#Disable()
|
||||||
|
|
||||||
" A command for linting manually.
|
" A command for linting manually.
|
||||||
command! -bar ALELint :call ale#Queue(0, 'lint_file')
|
command! -bar ALELint :call ale#Queue(0, 'lint_file')
|
||||||
@ -381,6 +250,9 @@ nnoremap <silent> <Plug>(ale_lint) :ALELint<Return>
|
|||||||
nnoremap <silent> <Plug>(ale_detail) :ALEDetail<Return>
|
nnoremap <silent> <Plug>(ale_detail) :ALEDetail<Return>
|
||||||
nnoremap <silent> <Plug>(ale_fix) :ALEFix<Return>
|
nnoremap <silent> <Plug>(ale_fix) :ALEFix<Return>
|
||||||
|
|
||||||
|
" Set up autocmd groups now.
|
||||||
|
call ale#toggle#InitAuGroups()
|
||||||
|
|
||||||
" Housekeeping
|
" Housekeeping
|
||||||
|
|
||||||
augroup ALECleanupGroup
|
augroup ALECleanupGroup
|
||||||
|
@ -2,6 +2,7 @@ Before:
|
|||||||
Save g:ale_buffer_info
|
Save g:ale_buffer_info
|
||||||
Save g:ale_set_signs
|
Save g:ale_set_signs
|
||||||
Save g:ale_set_lists_synchronously
|
Save g:ale_set_lists_synchronously
|
||||||
|
Save g:ale_run_synchronously
|
||||||
|
|
||||||
let g:ale_set_signs = 1
|
let g:ale_set_signs = 1
|
||||||
let g:ale_set_lists_synchronously = 1
|
let g:ale_set_lists_synchronously = 1
|
||||||
@ -175,3 +176,31 @@ Execute(ALEToggle should skip filename keys and preserve them):
|
|||||||
\ 'history': [],
|
\ 'history': [],
|
||||||
\ },
|
\ },
|
||||||
\ get(g:ale_buffer_info, '/foo/bar/baz.txt', {})
|
\ get(g:ale_buffer_info, '/foo/bar/baz.txt', {})
|
||||||
|
|
||||||
|
Execute(ALEDisable should reset everything and stay disabled):
|
||||||
|
" We can just lint sychronously for these tests.
|
||||||
|
let g:ale_run_synchronously = 1
|
||||||
|
|
||||||
|
call ale#Lint()
|
||||||
|
|
||||||
|
AssertEqual g:expected_loclist, getloclist(0)
|
||||||
|
|
||||||
|
ALEDisable
|
||||||
|
|
||||||
|
AssertEqual [], getloclist(0)
|
||||||
|
AssertEqual 0, g:ale_enabled
|
||||||
|
|
||||||
|
ALEDisable
|
||||||
|
|
||||||
|
AssertEqual [], getloclist(0)
|
||||||
|
AssertEqual 0, g:ale_enabled
|
||||||
|
|
||||||
|
Execute(ALEEnable should enable ALE and lint again):
|
||||||
|
" We can just lint sychronously for these tests.
|
||||||
|
let g:ale_enabled = 0
|
||||||
|
let g:ale_run_synchronously = 1
|
||||||
|
|
||||||
|
ALEEnable
|
||||||
|
|
||||||
|
AssertEqual g:expected_loclist, getloclist(0)
|
||||||
|
AssertEqual 1, g:ale_enabled
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
Before:
|
Before:
|
||||||
function! CheckAutocmd(group)
|
function! CheckAutocmd(group)
|
||||||
call ALEInitAuGroups()
|
call ale#toggle#InitAuGroups()
|
||||||
|
|
||||||
redir => l:output
|
redir => l:output
|
||||||
execute 'silent! autocmd ' . a:group
|
execute 'silent! autocmd ' . a:group
|
||||||
redir END
|
redir END
|
||||||
@ -58,7 +59,7 @@ After:
|
|||||||
call ale#completion#Disable()
|
call ale#completion#Disable()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
call ALEInitAuGroups()
|
call ale#toggle#InitAuGroups()
|
||||||
|
|
||||||
Execute (g:ale_lint_on_text_changed = 0 should bind no events):
|
Execute (g:ale_lint_on_text_changed = 0 should bind no events):
|
||||||
let g:ale_lint_on_text_changed = 0
|
let g:ale_lint_on_text_changed = 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user