summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-10-28 15:41:14 +0100
committerw0rp <devw0rp@gmail.com>2017-10-28 15:41:14 +0100
commitea3a8e3c62d3051fee9342ece2e04bcd04b392b6 (patch)
tree36507761c15f0264877d9979b0f5a10f91aaa3c3 /autoload
parent6e681d9066bde1f2a6b7583fa91e9c94cfffb11e (diff)
downloadale-ea3a8e3c62d3051fee9342ece2e04bcd04b392b6.zip
#817 Move code for toggling ALE to its own file
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/toggle.vim140
1 files changed, 140 insertions, 0 deletions
diff --git a/autoload/ale/toggle.vim b/autoload/ale/toggle.vim
new file mode 100644
index 00000000..acddea4b
--- /dev/null
+++ b/autoload/ale/toggle.vim
@@ -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