diff options
author | w0rp <devw0rp@gmail.com> | 2019-02-13 17:53:01 +0000 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2019-02-13 17:53:01 +0000 |
commit | 21a8b9f1e3ea21e8f41cd3bc7da691687d173b83 (patch) | |
tree | df88d8b80afe8989cff09ed9faea6e4c5477e310 /autoload | |
parent | 1ee56713b8f9cfd0faa99dd7930437fa7ed986b0 (diff) | |
download | ale-21a8b9f1e3ea21e8f41cd3bc7da691687d173b83.zip |
Make it easier to remove command_chain support later
Diffstat (limited to 'autoload')
-rw-r--r-- | autoload/ale/engine.vim | 55 |
1 files changed, 39 insertions, 16 deletions
diff --git a/autoload/ale/engine.vim b/autoload/ale/engine.vim index c469bf5e..e96bc83d 100644 --- a/autoload/ale/engine.vim +++ b/autoload/ale/engine.vim @@ -177,7 +177,15 @@ function! s:HandleExit(job_info, buffer, output, data) abort endif if l:next_chain_index < len(get(l:linter, 'command_chain', [])) - call s:InvokeChain(a:buffer, l:executable, l:linter, l:next_chain_index, a:output) + let [l:command, l:options] = ale#engine#ProcessChain( + \ a:buffer, + \ l:executable, + \ l:linter, + \ l:next_chain_index, + \ a:output, + \) + + call s:RunJob(l:command, l:options) return endif @@ -396,11 +404,11 @@ endfunction " Run a job. " " Returns 1 when the job was started successfully. -function! s:RunJob(options) abort - let l:command = a:options.command +function! s:RunJob(command, options) abort + let l:command = a:command if empty(l:command) - return v:false + return 0 endif let l:executable = a:options.executable @@ -448,7 +456,7 @@ endfunction " Determine which commands to run for a link in a command chain, or " just a regular command. -function! ale#engine#ProcessChain(buffer, linter, chain_index, input) abort +function! ale#engine#ProcessChain(buffer, executable, linter, chain_index, input) abort let l:output_stream = get(a:linter, 'output_stream', 'stdout') let l:read_buffer = a:linter.read_buffer let l:chain_index = a:chain_index @@ -502,21 +510,14 @@ function! ale#engine#ProcessChain(buffer, linter, chain_index, input) abort let l:command = ale#linter#GetCommand(a:buffer, a:linter) endif - return { - \ 'command': l:command, + return [l:command, { + \ 'executable': a:executable, \ 'buffer': a:buffer, \ 'linter': a:linter, \ 'output_stream': l:output_stream, \ 'next_chain_index': l:chain_index + 1, \ 'read_buffer': l:read_buffer, - \} -endfunction - -function! s:InvokeChain(buffer, executable, linter, chain_index, input) abort - let l:options = ale#engine#ProcessChain(a:buffer, a:linter, a:chain_index, a:input) - let l:options.executable = a:executable - - return s:RunJob(l:options) + \}] endfunction function! s:StopCurrentJobs(buffer, include_lint_file_jobs) abort @@ -604,7 +605,29 @@ function! s:RunIfExecutable(buffer, linter, executable) abort let l:job_type = a:linter.lint_file ? 'file_linter' : 'linter' call setbufvar(a:buffer, 'ale_job_type', l:job_type) - return s:InvokeChain(a:buffer, a:executable, a:linter, 0, []) + if has_key(a:linter, 'command_chain') + let [l:command, l:options] = ale#engine#ProcessChain( + \ a:buffer, + \ a:executable, + \ a:linter, + \ 0, + \ [] + \) + + return s:RunJob(l:command, l:options) + endif + + let l:command = ale#linter#GetCommand(a:buffer, a:linter) + let l:options = { + \ 'executable': a:executable, + \ 'buffer': a:buffer, + \ 'linter': a:linter, + \ 'output_stream': get(a:linter, 'output_stream', 'stdout'), + \ 'next_chain_index': 1, + \ 'read_buffer': a:linter.read_buffer, + \} + + return s:RunJob(l:command, l:options) endif return 0 |