summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md9
-rw-r--r--autoload/ale/events.vim2
-rw-r--r--doc/ale.txt9
-rw-r--r--plugin/ale.vim8
-rw-r--r--test/test_ale_info.vader8
-rw-r--r--test/test_autocmd_commands.vader4
-rw-r--r--test/test_cursor_warnings.vader9
7 files changed, 31 insertions, 18 deletions
diff --git a/README.md b/README.md
index 340ccb4d..91f0c3ea 100644
--- a/README.md
+++ b/README.md
@@ -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
diff --git a/autoload/ale/events.vim b/autoload/ale/events.vim
index c3dbd378..da554ef9 100644
--- a/autoload/ale/events.vim
+++ b/autoload/ale/events.vim
@@ -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
diff --git a/doc/ale.txt b/doc/ale.txt
index 736d8e05..6aa03a12 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -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|.
diff --git a/plugin/ale.vim b/plugin/ale.vim
index cf39d632..7edf9a50 100644
--- a/plugin/ale.vim
+++ b/plugin/ale.vim
@@ -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)
diff --git a/test/test_ale_info.vader b/test/test_ale_info.vader
index c723dba3..decd49e9 100644
--- a/test/test_ale_info.vader
+++ b/test/test_ale_info.vader
@@ -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',
diff --git a/test/test_autocmd_commands.vader b/test/test_autocmd_commands.vader
index 4bb894ba..241e7d3e 100644
--- a/test/test_autocmd_commands.vader
+++ b/test/test_autocmd_commands.vader
@@ -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''')
diff --git a/test/test_cursor_warnings.vader b/test/test_cursor_warnings.vader
index 24652909..2a6156f0 100644
--- a/test/test_cursor_warnings.vader
+++ b/test/test_cursor_warnings.vader
@@ -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");