diff --git a/autoload/ale/statusline.vim b/autoload/ale/statusline.vim index 7269ddc..efb7e9e 100644 --- a/autoload/ale/statusline.vim +++ b/autoload/ale/statusline.vim @@ -3,6 +3,10 @@ " Update the buffer error/warning count with data from loclist. function! ale#statusline#Update(buffer, loclist) abort + if !exists('g:ale_buffer_info') + return + endif + if !has_key(g:ale_buffer_info, a:buffer) return endif @@ -39,6 +43,10 @@ endfunction " Returns a tuple of errors and warnings for use in third-party integrations. function! ale#statusline#Count(buffer) abort + if !exists('g:ale_buffer_info') + return [0, 0] + endif + if !s:SetupCount(a:buffer) return [0, 0] endif @@ -48,6 +56,10 @@ endfunction " Returns a formatted string that can be integrated in the statusline. function! ale#statusline#Status() abort + if !exists('g:ale_buffer_info') + return 'OK' + endif + let [l:error_format, l:warning_format, l:no_errors] = g:ale_statusline_format let l:buffer = bufnr('%') diff --git a/test/test_statusline_api_without_globals.vader b/test/test_statusline_api_without_globals.vader new file mode 100644 index 0000000..29677f3 --- /dev/null +++ b/test/test_statusline_api_without_globals.vader @@ -0,0 +1,19 @@ +" This file tests that statusline functions return meaningful output even +" when most of ALE itself has not been loaded. +" +" This is important for plugins which integrate with ALE like airline. + +Before: + unlet! g:ale_buffer_info + +After: + let g:ale_buffer_info = {} + +Execute(ale#statusline#Update shouldn't blow up when globals are undefined): + call ale#statusline#Update(1, []) + +Execute(ale#statusline#Count should return 0 counts when globals are undefined): + AssertEqual [0, 0], ale#statusline#Count(1) + +Execute(ale#statusline#Status should return 'OK' when globals are undefined): + AssertEqual 'OK', ale#statusline#Status()