Before: Save g:ale_buffer_info, g:ale_enabled, b:ale_enabled function! TestCallback(buffer, output) return [] endfunction call ale#linter#Define('foobar', { \ 'name': 'testlinter', \ 'callback': 'TestCallback', \ 'executable': 'echo', \ 'command': 'true', \}) function GetLastMessage() redir => l:output silent mess redir END let l:lines = split(l:output, "\n") return empty(l:lines) ? '' : l:lines[-1] endfunction echomsg '' After: Restore call ale#linter#Reset() delfunction TestCallback delfunction GetLastMessage Given foobar (Some imaginary filetype): foo bar baz Execute(Linting shouldn't happen when ALE is disabled globally): let g:ale_enabled = 0 let g:ale_buffer_info = {} call ale#Queue(0) AssertEqual {}, g:ale_buffer_info Execute(Linting shouldn't happen when ALE is disabled locally): let b:ale_enabled = 0 let g:ale_buffer_info = {} call ale#Queue(0) AssertEqual {}, g:ale_buffer_info Execute(Cursor warnings shouldn't be echoed when ALE is disabled globally): let g:ale_enabled = 0 let g:ale_buffer_info = { \ bufnr('%'): { \ 'loclist': [ \ { \ 'lnum': 2, \ 'col': 10, \ 'linter_name': 'testlinter', \ 'type': 'W', \ 'text': 'X' \ }, \ ], \ }, \} call cursor(2, 16) call ale#cursor#EchoCursorWarning() AssertEqual '', GetLastMessage() Execute(Cursor warnings shouldn't be echoed when ALE is disabled locally): let b:ale_enabled = 0 let g:ale_buffer_info = { \ bufnr('%'): { \ 'loclist': [ \ { \ 'lnum': 2, \ 'col': 10, \ 'linter_name': 'testlinter', \ 'type': 'W', \ 'text': 'X' \ }, \ ], \ }, \} call cursor(2, 16) call ale#cursor#EchoCursorWarning() AssertEqual '', GetLastMessage()