diff --git a/autoload/ale.vim b/autoload/ale.vim index 2d29c8f7..ce2589bb 100644 --- a/autoload/ale.vim +++ b/autoload/ale.vim @@ -14,16 +14,17 @@ function! ale#ShouldDoNothing() abort \ || ale#util#InSandbox() endfunction -" (delay, [run_file_linters]) +" (delay, [linting_flag]) function! ale#Queue(delay, ...) abort if len(a:0) > 1 throw 'too many arguments!' endif - let l:a1 = len(a:0) > 1 ? a:1 : 0 + " Default run_file_linters to 0 + let l:linting_flag = len(a:0) > 1 ? a:1 : '' - if type(l:a1) != type(1) || (l:a1 != 0 && l:a1 != 1) - throw 'The lint_file argument must be a Number which is either 0 or 1!' + if l:linting_flag !=# '' && l:linting_flag !=# 'lint_file' + throw "linting_flag must be either '' or 'lint_file'" endif if ale#ShouldDoNothing() @@ -31,7 +32,7 @@ function! ale#Queue(delay, ...) abort endif " Remember the event used for linting. - let s:should_lint_file = l:a1 + let s:should_lint_file = l:linting_flag ==# 'lint_file' if s:lint_timer != -1 call timer_stop(s:lint_timer) diff --git a/doc/ale.txt b/doc/ale.txt index 9db06995..c9b51f01 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -1168,6 +1168,9 @@ ALELint *ALELint* Run ALE once for the current buffer. This command can be used to run ALE manually, instead of automatically, if desired. + This command will also run linters where `lint_file` is set to `1`, or in + other words linters which check the file instead of the Vim buffer. + A plug mapping `(ale_lint)` is defined for this command. @@ -1219,17 +1222,16 @@ ALEDetail *ALEDetail* =============================================================================== 7. API *ale-api* -ale#Queue(delay, [run_file_linters]) *ale#Queue()* +ale#Queue(delay, [linting_flag]) *ale#Queue()* Run linters for the current buffer, based on the filetype of the buffer, with a given `delay`. A `delay` of `0` will run the linters immediately. The linters will always be run in the background. Calling this function again from the same buffer - An optional `run_file_linters` argument can be given. If `run_file_linters` - is `0`, then no linters where the `lint_file` option is set to `1` will be - run. If `run_file_linters` is set to `1`, then all linters for the current - file will be run. `run_file_linters` defaults to `0`. + An optional `linting_flag` argument can be given. If `linting_flag` + is `'lint_file'`, then linters where the `lint_file` option is set to `1` will be + run. Linters with `lint_file` set to `1` are not run by default. ale#engine#EscapeCommandPart(command_part) *ale#engine#EscapeCommandPart()* diff --git a/plugin/ale.vim b/plugin/ale.vim index 84f57dbd..3033fd5c 100644 --- a/plugin/ale.vim +++ b/plugin/ale.vim @@ -157,14 +157,14 @@ function! s:ALEInitAuGroups() abort augroup ALERunOnEnterGroup autocmd! if g:ale_enabled && g:ale_lint_on_enter - autocmd BufEnter,BufRead * call ale#Queue(300, 1) + autocmd BufEnter,BufRead * call ale#Queue(300, 'lint_file') endif augroup END augroup ALERunOnSaveGroup autocmd! if g:ale_enabled && g:ale_lint_on_save - autocmd BufWrite * call ale#Queue(0, 1) + autocmd BufWrite * call ale#Queue(0, 'lint_file') endif augroup END @@ -191,8 +191,8 @@ function! s:ALEToggle() abort let g:ale_enabled = !get(g:, 'ale_enabled') if g:ale_enabled - " Lint immediately - call ale#Queue(0) + " Lint immediately, including running linters against the file. + call ale#Queue(0, 'lint_file') else " Make sure the buffer number is a number, not a string, " otherwise things can go wrong. @@ -226,7 +226,7 @@ command! ALEDetail :call ale#cursor#ShowCursorDetail() " A command for turning ALE on or off. command! ALEToggle :call s:ALEToggle() " A command for linting manually. -command! ALELint :call ale#Queue(0) +command! ALELint :call ale#Queue(0, 'lint_file') " Define a command to get information about current filetype. command! ALEInfo :call ale#debugging#Info()