diff options
author | w0rp <devw0rp@gmail.com> | 2018-04-12 20:31:33 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2018-04-12 20:31:45 +0100 |
commit | 0cd8e8630b69613df3a2a65fdd830364de157129 (patch) | |
tree | 43f28b61ee1893537999007e0cb5df6a0708992b | |
parent | 3401a4e8ea35608d90a6cf709a790a37f112d201 (diff) | |
download | ale-0cd8e8630b69613df3a2a65fdd830364de157129.zip |
#1497 Tolerate important ALE variables being undefined for some reason when viewing buffers like git commits
-rw-r--r-- | autoload/ale.vim | 16 | ||||
-rw-r--r-- | test/test_lint_error_delay.vader | 10 | ||||
-rw-r--r-- | test/test_should_do_nothing_conditions.vader | 15 |
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('')) |