summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-05-26 16:20:17 +0100
committerw0rp <devw0rp@gmail.com>2017-05-26 16:20:17 +0100
commit9460e58c3b254d6716d607799fa9333f3d20d40f (patch)
tree035570b598fac583f5f14782a1f6ad191349ab83
parentc77cf0e518e18b2e6f1f259c0f92e717d28c8998 (diff)
downloadale-9460e58c3b254d6716d607799fa9333f3d20d40f.zip
Fix #371 Allow ALE to be disabled in different buffers
-rw-r--r--autoload/ale.vim5
-rw-r--r--autoload/ale/cursor.vim14
-rw-r--r--doc/ale.txt11
-rw-r--r--test/test_disabling_ale.vader92
4 files changed, 122 insertions, 0 deletions
diff --git a/autoload/ale.vim b/autoload/ale.vim
index 066bfa07..62a8bf4d 100644
--- a/autoload/ale.vim
+++ b/autoload/ale.vim
@@ -29,6 +29,11 @@ function! ale#Queue(delay, ...) abort
throw "linting_flag must be either '' or 'lint_file'"
endif
+ " Stop here if ALE is disabled.
+ if !ale#Var(bufnr(''), 'enabled')
+ return
+ endif
+
if ale#ShouldDoNothing()
return
endif
diff --git a/autoload/ale/cursor.vim b/autoload/ale/cursor.vim
index e5ce7fde..572880a9 100644
--- a/autoload/ale/cursor.vim
+++ b/autoload/ale/cursor.vim
@@ -66,6 +66,15 @@ function! s:StopCursorTimer() abort
endfunction
function! ale#cursor#EchoCursorWarning(...) abort
+ " Stop here if ALE is disabled.
+ if !ale#Var(bufnr(''), 'enabled')
+ return
+ endif
+
+ if ale#ShouldDoNothing()
+ return
+ endif
+
" Only echo the warnings in normal mode, otherwise we will get problems.
if mode() !=# 'n'
return
@@ -89,6 +98,11 @@ let s:cursor_timer = -1
let s:last_pos = [0, 0, 0]
function! ale#cursor#EchoCursorWarningWithDelay() abort
+ " Stop here if ALE is disabled.
+ if !ale#Var(bufnr(''), 'enabled')
+ return
+ endif
+
if ale#ShouldDoNothing()
return
endif
diff --git a/doc/ale.txt b/doc/ale.txt
index bc632e21..4868e17c 100644
--- a/doc/ale.txt
+++ b/doc/ale.txt
@@ -277,6 +277,7 @@ g:ale_emit_conflict_warnings *g:ale_emit_conflict_warnings*
g:ale_enabled *g:ale_enabled*
+ *b:ale_enabled*
Type: |Number|
Default: `1`
@@ -285,6 +286,16 @@ g:ale_enabled *g:ale_enabled*
error checking will be performed, etc. ALE can be toggled on and off with
the |ALEToggle| command, which changes this option.
+ ALE can be disabled in each buffer by setting `let b:ale_enabled = 0`
+ Disabling ALE based on filename patterns can be accomplished by setting
+ a regular expression for |g:ale_pattern_options|. For example: >
+
+ " Disable linting for all minified JS files.
+ let g:ale_pattern_options = {'\.min.js$': {'ale_enabled': 0}}
+<
+
+ See |g:ale_pattern_options| for more information on that option.
+
g:ale_fixers *g:ale_fixers*
*b:ale_fixers*
diff --git a/test/test_disabling_ale.vader b/test/test_disabling_ale.vader
new file mode 100644
index 00000000..b08c5b1d
--- /dev/null
+++ b/test/test_disabling_ale.vader
@@ -0,0 +1,92 @@
+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()