You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

19 lines
544 B

function! s:next(steps, current_index, result) abort
if len(a:steps) == a:current_index
return
endif
let l:Step = a:steps[a:current_index]
let l:ctx = {
\ 'callback': function('s:callback', [a:steps, a:current_index]),
\ 'result': a:result
\ }
call call(l:Step, [l:ctx])
endfunction
function! s:callback(steps, current_index, ...) abort
call s:next(a:steps, a:current_index + 1, a:000)
endfunction
function! lsp#utils#step#start(steps) abort
call s:next(a:steps, 0, [])
endfunction