summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-08-01 00:03:24 +0100
committerw0rp <devw0rp@gmail.com>2017-08-01 00:03:24 +0100
commita4ffd2f37c5d535d62170f7e3021cd2981689988 (patch)
tree3216004415ad5d39a42e105c6969fc59dfdea031 /autoload
parentec82530247547a696f888cdefd4aeec5cf3d40cf (diff)
downloadale-a4ffd2f37c5d535d62170f7e3021cd2981689988.zip
#734 - Use the buffer number from the events for entering buffers and saving buffers for checking buffers
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale.vim38
-rw-r--r--autoload/ale/cursor.vim6
-rw-r--r--autoload/ale/engine.vim2
-rw-r--r--autoload/ale/events.vim20
4 files changed, 39 insertions, 27 deletions
diff --git a/autoload/ale.vim b/autoload/ale.vim
index 5efe15ab..aba3fda1 100644
--- a/autoload/ale.vim
+++ b/autoload/ale.vim
@@ -15,19 +15,19 @@ endfunction
" A function for checking various conditions whereby ALE just shouldn't
" attempt to do anything, say if particular buffer types are open in Vim.
-function! ale#ShouldDoNothing() abort
+function! ale#ShouldDoNothing(buffer) abort
" Do nothing for blacklisted files
" OR if ALE is running in the sandbox
return index(g:ale_filetype_blacklist, &filetype) >= 0
\ || (exists('*getcmdwintype') && !empty(getcmdwintype()))
\ || ale#util#InSandbox()
- \ || !ale#Var(bufnr(''), 'enabled')
+ \ || !ale#Var(a:buffer, 'enabled')
\ || ale#FileTooLarge()
endfunction
-" (delay, [linting_flag])
+" (delay, [linting_flag, buffer_number])
function! ale#Queue(delay, ...) abort
- if len(a:0) > 1
+ if a:0 > 2
throw 'too many arguments!'
endif
@@ -38,7 +38,13 @@ function! ale#Queue(delay, ...) abort
throw "linting_flag must be either '' or 'lint_file'"
endif
- if ale#ShouldDoNothing()
+ let l:buffer = get(a:000, 1, bufnr(''))
+
+ if type(l:buffer) != type(0)
+ throw 'buffer_number must be a Number'
+ endif
+
+ if ale#ShouldDoNothing(l:buffer)
return
endif
@@ -53,7 +59,6 @@ function! ale#Queue(delay, ...) abort
let s:lint_timer = -1
endif
- let l:buffer = bufnr('')
let l:linters = ale#linter#Get(getbufvar(l:buffer, '&filetype'))
" Don't set up buffer data and so on if there are no linters to run.
@@ -68,21 +73,26 @@ function! ale#Queue(delay, ...) abort
endif
if a:delay > 0
- let s:queued_buffer_number = bufnr('%')
+ let s:queued_buffer_number = l:buffer
let s:lint_timer = timer_start(a:delay, function('ale#Lint'))
else
- call ale#Lint()
+ call ale#Lint(-1, l:buffer)
endif
endfunction
function! ale#Lint(...) abort
- " Get the buffer number linting was queued for.
- " or else take the current one.
- let l:buffer = len(a:0) > 1 && a:1 == s:lint_timer
- \ ? s:queued_buffer_number
- \ : bufnr('%')
+ if a:0 > 1
+ " Use the buffer number given as the optional second argument.
+ let l:buffer = a:2
+ elseif a:0 > 0 && a:1 == s:lint_timer
+ " Use the buffer number for the buffer linting was queued for.
+ let l:buffer = s:queued_buffer_number
+ else
+ " Use the current buffer number.
+ let l:buffer = bufnr('')
+ endif
- if ale#ShouldDoNothing()
+ if ale#ShouldDoNothing(l:buffer)
return
endif
diff --git a/autoload/ale/cursor.vim b/autoload/ale/cursor.vim
index 3e19b6fc..0c6a8634 100644
--- a/autoload/ale/cursor.vim
+++ b/autoload/ale/cursor.vim
@@ -66,7 +66,7 @@ function! s:StopCursorTimer() abort
endfunction
function! ale#cursor#EchoCursorWarning(...) abort
- if ale#ShouldDoNothing()
+ if ale#ShouldDoNothing(bufnr(''))
return
endif
@@ -93,7 +93,7 @@ let s:cursor_timer = -1
let s:last_pos = [0, 0, 0]
function! ale#cursor#EchoCursorWarningWithDelay() abort
- if ale#ShouldDoNothing()
+ if ale#ShouldDoNothing(bufnr(''))
return
endif
@@ -112,7 +112,7 @@ function! ale#cursor#EchoCursorWarningWithDelay() abort
endfunction
function! ale#cursor#ShowCursorDetail() abort
- if ale#ShouldDoNothing()
+ if ale#ShouldDoNothing(bufnr(''))
return
endif
diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim
index 76c529fb..52acfe7f 100644
--- a/autoload/ale/engine.vim
+++ b/autoload/ale/engine.vim
@@ -139,7 +139,7 @@ function! s:HandleLoclist(linter_name, buffer, loclist) abort
" for efficient lookup of the messages in the cursor handler.
call sort(g:ale_buffer_info[a:buffer].loclist, 'ale#util#LocItemCompare')
- if ale#ShouldDoNothing()
+ if ale#ShouldDoNothing(a:buffer)
return
endif
diff --git a/autoload/ale/events.vim b/autoload/ale/events.vim
index f740fdaa..4722afa9 100644
--- a/autoload/ale/events.vim
+++ b/autoload/ale/events.vim
@@ -1,7 +1,7 @@
" Author: w0rp <devw0rp@gmail.com>
-function! ale#events#SaveEvent() abort
- let l:should_lint = g:ale_enabled && g:ale_lint_on_save
+function! ale#events#SaveEvent(buffer) abort
+ let l:should_lint = ale#Var(a:buffer, 'enabled') && g:ale_lint_on_save
if g:ale_fix_on_save
let l:will_fix = ale#fix#Fix('save_file')
@@ -9,25 +9,27 @@ function! ale#events#SaveEvent() abort
endif
if l:should_lint
- call ale#Queue(0, 'lint_file')
+ call ale#Queue(0, 'lint_file', a:buffer)
endif
endfunction
-function! s:LintOnEnter() abort
- if g:ale_enabled && g:ale_lint_on_enter && has_key(b:, 'ale_file_changed')
+function! s:LintOnEnter(buffer) abort
+ if ale#Var(a:buffer, 'enabled')
+ \&& g:ale_lint_on_enter
+ \&& has_key(b:, 'ale_file_changed')
call remove(b:, 'ale_file_changed')
- call ale#Queue(0, 'lint_file')
+ call ale#Queue(0, 'lint_file', a:buffer)
endif
endfunction
-function! ale#events#EnterEvent() abort
- call s:LintOnEnter()
+function! ale#events#EnterEvent(buffer) abort
+ call s:LintOnEnter(a:buffer)
endfunction
function! ale#events#FileChangedEvent(buffer) abort
call setbufvar(a:buffer, 'ale_file_changed', 1)
if bufnr('') == a:buffer
- call s:LintOnEnter()
+ call s:LintOnEnter(a:buffer)
endif
endfunction