summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2018-04-12 20:31:33 +0100
committerw0rp <devw0rp@gmail.com>2018-04-12 20:31:45 +0100
commit0cd8e8630b69613df3a2a65fdd830364de157129 (patch)
tree43f28b61ee1893537999007e0cb5df6a0708992b
parent3401a4e8ea35608d90a6cf709a790a37f112d201 (diff)
downloadale-0cd8e8630b69613df3a2a65fdd830364de157129.zip
#1497 Tolerate important ALE variables being undefined for some reason when viewing buffers like git commits
-rw-r--r--autoload/ale.vim16
-rw-r--r--test/test_lint_error_delay.vader10
-rw-r--r--test/test_should_do_nothing_conditions.vader15
3 files changed, 29 insertions, 12 deletions
diff --git a/autoload/ale.vim b/autoload/ale.vim
index f6c06cf1..5c4a0f55 100644
--- a/autoload/ale.vim
+++ b/autoload/ale.vim
@@ -33,6 +33,10 @@ endfunction
" Return 1 if a file is too large for ALE to handle.
function! ale#FileTooLarge() abort
+ if !exists('g:ale_maximum_file_size')
+ return 0
+ endif
+
let l:max = ale#Var(bufnr(''), 'maximum_file_size')
return l:max > 0 ? (line2byte(line('$') + 1) > l:max) : 0
@@ -46,13 +50,18 @@ function! ale#ShouldDoNothing(buffer) abort
" The checks are split into separate if statements to make it possible to
" profile each check individually with Vim's profiling tools.
+ " Do nothing if ALE is disabled.
+ if !getbufvar(a:buffer, 'ale_enabled', get(g:, 'ale_enabled', 0))
+ return 1
+ endif
+
" Don't perform any checks when newer NeoVim versions are exiting.
if get(v:, 'exiting', v:null) isnot v:null
return 1
endif
" Do nothing for blacklisted files
- if index(g:ale_filetype_blacklist, getbufvar(a:buffer, '&filetype')) >= 0
+ if index(get(g:, 'ale_filetype_blacklist', []), getbufvar(a:buffer, '&filetype')) >= 0
return 1
endif
@@ -72,11 +81,6 @@ function! ale#ShouldDoNothing(buffer) abort
return 1
endif
- " Do nothing if ALE is disabled.
- if !ale#Var(a:buffer, 'enabled')
- return 1
- endif
-
" Do nothing if the file is too large.
if ale#FileTooLarge()
return 1
diff --git a/test/test_lint_error_delay.vader b/test/test_lint_error_delay.vader
index 7f081794..05664899 100644
--- a/test/test_lint_error_delay.vader
+++ b/test/test_lint_error_delay.vader
@@ -1,11 +1,13 @@
Before:
- Save g:ale_filetype_blacklist
+ runtime autoload/ale.vim
- " Delete some variable which should be defined.
- unlet! g:ale_filetype_blacklist
+ " Replace one of the key ALE functions and make it throw.
+ function! ale#FileTooLarge() abort
+ throw 'broken'
+ endfunction
After:
- Restore
+ runtime autoload/ale.vim
call ale#ResetErrorDelays()
diff --git a/test/test_should_do_nothing_conditions.vader b/test/test_should_do_nothing_conditions.vader
index 23ebd92e..85874e53 100644
--- a/test/test_should_do_nothing_conditions.vader
+++ b/test/test_should_do_nothing_conditions.vader
@@ -1,4 +1,7 @@
Before:
+ Save g:ale_filetype_blacklist
+ Save g:ale_maximum_file_size
+ Save g:ale_enabled
Save &l:statusline
call ale#test#SetDirectory('/testplugin/test')
@@ -12,6 +15,8 @@ Before:
endif
After:
+ Restore
+
call ale#test#RestoreDirectory()
if b:funky_command_created
@@ -21,8 +26,6 @@ After:
unlet! b:funky_command_created
- Restore
-
Execute(ALE shouldn't do much of anything for ctrlp-funky buffers):
Assert !ale#ShouldDoNothing(bufnr('')), 'The preliminary check failed'
@@ -39,3 +42,11 @@ Execute(ALE shouldn't try to check buffers with '.' as the filename):
silent! noautocmd file .
Assert ale#ShouldDoNothing(bufnr(''))
+
+Execute(The DoNothing check should work if the ALE globals aren't defined):
+ unlet! g:ale_filetype_blacklist
+ unlet! g:ale_maximum_file_size
+ unlet! g:ale_enabled
+
+ " This shouldn't throw exceptions.
+ call ale#ShouldDoNothing(bufnr(''))