Add ALEStartLint autocmd
This grew out of my work in #1193; to ensure the statusline was being updated I had to add: fun! s:redraw(timer) redrawstatus endfun augroup ALEProgress autocmd! autocmd BufWritePost * call timer_start(100, function('s:redraw')) autocmd User ALELint redrawstatus augroup end Which kind of works, but is ugly. With this, I can replace the `BufWritePost` with: autocmd User ALEStartLint redrawstatus Which is much better, IMHO. Actually, this patch actually replaces adding a function, since you can do: augroup ALEProgress autocmd! autocmd User ALEStartLint hi Statusline ctermfg=darkgrey autocmd User ALELint hi Statusline ctermfg=NONE augroup end or: let s:ale_running = 0 let l:stl .= '%{s:ale_running ? "[linting]" : ""}' augroup ALEProgress autocmd! autocmd User ALEStartLint let s:ale_running = 1 | redrawstatus autocmd User ALELint let s:ale_running = 0 | redrawstatus augroup end Both seem to work very well in my testing. No need to `ale#Statusline#IsRunning()` anymore, I think?
This commit is contained in:
parent
e2a8f759d8
commit
d6bf13502a
10
README.md
10
README.md
@ -40,7 +40,7 @@ formatting tools, and some Language Server Protocol and `tsserver` features.
|
|||||||
5. [How can I show errors or warnings in my statusline?](#faq-statusline)
|
5. [How can I show errors or warnings in my statusline?](#faq-statusline)
|
||||||
6. [How can I show errors or warnings in my lightline?](#faq-lightline)
|
6. [How can I show errors or warnings in my lightline?](#faq-lightline)
|
||||||
7. [How can I change the format for echo messages?](#faq-echo-format)
|
7. [How can I change the format for echo messages?](#faq-echo-format)
|
||||||
8. [How can I execute some code when ALE stops linting?](#faq-autocmd)
|
8. [How can I execute some code when ALE starts or stops linting?](#faq-autocmd)
|
||||||
9. [How can I navigate between errors quickly?](#faq-navigation)
|
9. [How can I navigate between errors quickly?](#faq-navigation)
|
||||||
10. [How can I run linters only when I save files?](#faq-lint-on-save)
|
10. [How can I run linters only when I save files?](#faq-lint-on-save)
|
||||||
11. [How can I use the quickfix list instead of the loclist?](#faq-quickfix)
|
11. [How can I use the quickfix list instead of the loclist?](#faq-quickfix)
|
||||||
@ -493,15 +493,17 @@ Will give you:
|
|||||||
|
|
||||||
<a name="faq-autocmd"></a>
|
<a name="faq-autocmd"></a>
|
||||||
|
|
||||||
### 5.viii. How can I execute some code when ALE stops linting?
|
### 5.viii. How can I execute some code when ALE starts or stops linting?
|
||||||
|
|
||||||
ALE runs its own [autocmd](http://vimdoc.sourceforge.net/htmldoc/autocmd.html)
|
ALE runs its own [autocmd](http://vimdoc.sourceforge.net/htmldoc/autocmd.html)
|
||||||
event whenever has a linter has been successfully executed and processed. This
|
events whenever has a linter is started and has been successfully executed and
|
||||||
autocmd event can be used to call arbitrary functions after ALE stops linting.
|
processed. This autocmd event can be used to call arbitrary functions before and
|
||||||
|
after ALE stops linting.
|
||||||
|
|
||||||
```vim
|
```vim
|
||||||
augroup YourGroup
|
augroup YourGroup
|
||||||
autocmd!
|
autocmd!
|
||||||
|
autocmd User ALEStartLint call YourFunction()
|
||||||
autocmd User ALELint call YourFunction()
|
autocmd User ALELint call YourFunction()
|
||||||
augroup END
|
augroup END
|
||||||
```
|
```
|
||||||
|
@ -556,6 +556,8 @@ function! s:RunJob(options) abort
|
|||||||
\ 'output': [],
|
\ 'output': [],
|
||||||
\ 'next_chain_index': l:next_chain_index,
|
\ 'next_chain_index': l:next_chain_index,
|
||||||
\}
|
\}
|
||||||
|
|
||||||
|
silent doautocmd <nomodeline> User ALEStartLint
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if g:ale_history_enabled
|
if g:ale_history_enabled
|
||||||
|
@ -2196,6 +2196,12 @@ ALELint *ALELint-autocmd*
|
|||||||
The autocmd commands are run with |:silent|, so |:unsilent| is required for
|
The autocmd commands are run with |:silent|, so |:unsilent| is required for
|
||||||
echoing messges.
|
echoing messges.
|
||||||
|
|
||||||
|
|
||||||
|
ALEStartLint *ALEStartLint-autocmd*
|
||||||
|
|
||||||
|
This |User| autocommand is triggered by ALE right after it started a new
|
||||||
|
linting job.
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
10. Special Thanks *ale-special-thanks*
|
10. Special Thanks *ale-special-thanks*
|
||||||
|
|
||||||
|
@ -1,18 +1,41 @@
|
|||||||
Before:
|
Before:
|
||||||
|
let g:start = 0
|
||||||
let g:success = 0
|
let g:success = 0
|
||||||
let g:ale_run_synchronously = 1
|
let g:ale_run_synchronously = 1
|
||||||
|
|
||||||
|
function! TestCallback(buffer, output)
|
||||||
|
return [{
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'col': 3,
|
||||||
|
\ 'text': 'baz boz',
|
||||||
|
\}]
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
call ale#linter#Define('foobar', {
|
||||||
|
\ 'name': 'testlinter',
|
||||||
|
\ 'callback': 'TestCallback',
|
||||||
|
\ 'executable': has('win32') ? 'cmd' : 'true',
|
||||||
|
\ 'command': has('win32') ? 'echo' : 'true',
|
||||||
|
\})
|
||||||
|
"let g:ale_linters = {'foobar': ['lint_file_linter']}
|
||||||
|
|
||||||
After:
|
After:
|
||||||
let g:ale_run_synchronously = 0
|
let g:ale_run_synchronously = 0
|
||||||
let g:ale_buffer_info = {}
|
let g:ale_buffer_info = {}
|
||||||
|
let g:ale_linters = {}
|
||||||
|
call ale#linter#Reset()
|
||||||
|
delfunction TestCallback
|
||||||
augroup! VaderTest
|
augroup! VaderTest
|
||||||
|
|
||||||
Execute (Run a lint cycle, and check that a variable is set in the autocmd):
|
Execute (Run a lint cycle, and check that a variable is set in the autocmd):
|
||||||
|
set filetype=foobar
|
||||||
augroup VaderTest
|
augroup VaderTest
|
||||||
autocmd!
|
autocmd!
|
||||||
autocmd User ALELint let g:success = 1
|
autocmd User ALEStartLint let g:start = 1
|
||||||
|
autocmd User ALELint let g:success = 1
|
||||||
augroup end
|
augroup end
|
||||||
|
|
||||||
call ale#Lint()
|
call ale#Lint()
|
||||||
|
|
||||||
|
AssertEqual g:start, 1
|
||||||
AssertEqual g:success, 1
|
AssertEqual g:success, 1
|
||||||
|
Loading…
Reference in New Issue
Block a user