Lint on InsertLeave, not in insert mode by default

b:ale_lint_on_insert_leave is now supported as tests need it.

These defaults are saner and cause fewer issues for users by default.
This commit is contained in:
w0rp 2019-06-10 20:54:38 +01:00
parent 8b46fa3ee7
commit 168768b326
No known key found for this signature in database
GPG Key ID: 0FC1ECAA8C81CD83
7 changed files with 31 additions and 18 deletions

View File

@ -722,11 +722,10 @@ while you type. ALE uses a timeout which is cancelled and reset every time you
type, and this delay can be increased so linters are run less often. See
`:help g:ale_lint_delay` for more information.
If you don't wish to run linters while you type, you can disable that
behaviour. Set `g:ale_lint_on_text_changed` to `never` or `normal`. You won't
get as frequent error checking, but ALE shouldn't block your ability to edit a
document after you save a file, so the asynchronous nature of the plugin will
still be an advantage.
If you don't wish to run linters while you type, you can disable that behaviour.
Set `g:ale_lint_on_text_changed` to `never`. You won't get as frequent error
checking, but ALE shouldn't block your ability to edit a document after you save
a file, so the asynchronous nature of the plugin will still be an advantage.
If you are still concerned, you can turn the automatic linting off altogether,
including the option `g:ale_lint_on_enter`, and you can run ALE manually with

View File

@ -128,7 +128,7 @@ function! ale#events#Init() abort
endif
if g:ale_lint_on_insert_leave
autocmd InsertLeave * call ale#Queue(0)
autocmd InsertLeave * if ale#Var(str2nr(expand('<abuf>')), 'lint_on_insert_leave') | call ale#Queue(0) | endif
endif
if g:ale_echo_cursor || g:ale_cursor_detail

View File

@ -84,7 +84,7 @@ have even saved your changes. ALE will check your code in the following
circumstances, which can be configured with the associated options.
* When you modify a buffer. - |g:ale_lint_on_text_changed|
* On leaving insert mode. (off by default) - |g:ale_lint_on_insert_leave|
* On leaving insert mode. - |g:ale_lint_on_insert_leave|
* When you open a new or modified buffer. - |g:ale_lint_on_enter|
* When you save a buffer. - |g:ale_lint_on_save|
* When the filetype changes for a buffer. - |g:ale_lint_on_filetype_changed|
@ -953,7 +953,7 @@ g:ale_lint_on_save *g:ale_lint_on_save*
g:ale_lint_on_text_changed *g:ale_lint_on_text_changed*
Type: |String|
Default: `'always'`
Default: `'normal'`
This option controls how ALE will check your files as you make changes.
The following values can be used.
@ -978,6 +978,7 @@ g:ale_lint_on_text_changed *g:ale_lint_on_text_changed*
g:ale_lint_on_insert_leave *g:ale_lint_on_insert_leave*
*b:ale_lint_on_insert_leave*
Type: |Number|
Default: `0`
@ -992,6 +993,10 @@ g:ale_lint_on_insert_leave *g:ale_lint_on_insert_leave*
" Make using Ctrl+C do the same as Escape, to trigger autocmd commands
inoremap <C-c> <Esc>
<
A buffer-local version of this setting `b:ale_lint_on_insert_leave` can be
set to `0` to disable linting when leaving insert mode. The setting must
be enabled globally to be enabled locally.
You should set this setting once before ALE is loaded, and restart Vim if
you want to change your preferences. See |ale-lint-settings-on-startup|.

View File

@ -71,12 +71,12 @@ let g:ale_linter_aliases = get(g:, 'ale_linter_aliases', {})
let g:ale_lint_delay = get(g:, 'ale_lint_delay', 200)
" This flag can be set to 'never' to disable linting when text is changed.
" This flag can also be set to 'insert' or 'normal' to lint when text is
" changed only in insert or normal mode respectively.
let g:ale_lint_on_text_changed = get(g:, 'ale_lint_on_text_changed', 'always')
" This flag can also be set to 'always' or 'insert' to lint when text is
" changed in both normal and insert mode, or only in insert mode respectively.
let g:ale_lint_on_text_changed = get(g:, 'ale_lint_on_text_changed', 'normal')
" This flag can be set to 1 to enable linting when leaving insert mode.
let g:ale_lint_on_insert_leave = get(g:, 'ale_lint_on_insert_leave', 0)
let g:ale_lint_on_insert_leave = get(g:, 'ale_lint_on_insert_leave', 1)
" This flag can be set to 0 to disable linting when the buffer is entered.
let g:ale_lint_on_enter = get(g:, 'ale_lint_on_enter', 1)

View File

@ -31,8 +31,8 @@ Before:
let g:ale_completion_enabled = 0
let g:ale_completion_max_suggestions = 50
let g:ale_history_log_output = 1
let g:ale_lint_on_insert_leave = 0
let g:ale_lint_on_text_changed = 'always'
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lsp_error_messages = {}
let g:ale_maximum_file_size = 0
let g:ale_pattern_options = {}
@ -88,9 +88,9 @@ Before:
\ 'let g:ale_lint_delay = 200',
\ 'let g:ale_lint_on_enter = 1',
\ 'let g:ale_lint_on_filetype_changed = 1',
\ 'let g:ale_lint_on_insert_leave = 0',
\ 'let g:ale_lint_on_insert_leave = 1',
\ 'let g:ale_lint_on_save = 1',
\ 'let g:ale_lint_on_text_changed = ''always''',
\ 'let g:ale_lint_on_text_changed = ''normal''',
\ 'let g:ale_linter_aliases = {}',
\ 'let g:ale_linters = {}',
\ 'let g:ale_linters_explicit = 0',

View File

@ -87,7 +87,7 @@ Execute (All events should be set up when everything is on):
\ 'CursorMoved * if exists(''*ale#engine#Cleanup'') | call ale#cursor#EchoCursorWarningWithDelay() | endif',
\ 'FileChangedShellPost * call ale#events#FileChangedEvent(str2nr(expand(''<abuf>'')))',
\ 'FileType * call ale#events#FileTypeEvent( str2nr(expand(''<abuf>'')), expand(''<amatch>''))',
\ 'InsertLeave * call ale#Queue(0)',
\ 'InsertLeave * if ale#Var(str2nr(expand(''<abuf>'')), ''lint_on_insert_leave'') | call ale#Queue(0) | endif',
\ 'InsertLeave if exists(''*ale#engine#Cleanup'') | call ale#cursor#EchoCursorWarning() | endif',
\ 'TextChanged * call ale#Queue(g:ale_lint_delay)',
\ 'TextChangedI * call ale#Queue(g:ale_lint_delay)',
@ -158,7 +158,7 @@ Execute (g:ale_lint_on_insert_leave = 1 should bind InsertLeave):
AssertEqual
\ [
\ 'InsertLeave * call ale#Queue(0)',
\ 'InsertLeave * if ale#Var(str2nr(expand(''<abuf>'')), ''lint_on_insert_leave'') | call ale#Queue(0) | endif',
\ ],
\ filter(CheckAutocmd('ALEEvents'), 'v:val =~ ''^InsertLeave''')

View File

@ -1,6 +1,10 @@
Before:
Save g:ale_echo_msg_format
Save g:ale_echo_cursor
Save b:ale_lint_on_insert_leave
let g:ale_echo_msg_format = '%code: %%s'
let b:ale_lint_on_insert_leave = 0
" We should prefer the error message at column 10 instead of the warning.
let g:ale_buffer_info = {
@ -91,6 +95,9 @@ Before:
return empty(l:lines) ? '' : l:lines[-1]
endfunction
call ale#linter#Reset()
call ale#linter#PreventLoading('javascript')
After:
Restore
@ -117,6 +124,8 @@ After:
noautocmd :q!
endif
call ale#linter#Reset()
Given javascript(A Javscript file with warnings/errors):
var x = 3 + 12345678
var x = 5*2 + parseInt("10");