"============================================================================= " FILE: defx.vim " AUTHOR: Shougo Matsushita " License: MIT license "============================================================================= function! defx#initialize() abort return defx#init#_initialize() endfunction function! defx#start(paths, user_context) abort let prev_winid = win_getid() call defx#initialize() let context = defx#init#_context(a:user_context) let paths = map(a:paths, "[v:val[0], fnamemodify(v:val[1], ':p')]") call defx#util#rpcrequest('_defx_start', \ [paths, context], v:false) if context['search'] !=# '' call defx#call_action('search', [context['search']]) endif if !context['focus'] " Restore the window call win_gotoid(prev_winid) endif endfunction function! defx#start_candidates(candidates, user_context) abort call defx#initialize() let context = defx#init#_context(a:user_context) let listfile = tempname() call writefile(a:candidates, listfile) let paths = [['file/list', listfile]] call defx#util#rpcrequest('_defx_start', \ [paths, context], v:false) if context['search'] !=# '' call defx#call_action('search', [context['search']]) endif endfunction function! defx#do_action(action, ...) abort if &l:filetype !=# 'defx' return '' endif let args = defx#util#convert2list(get(a:000, 0, [])) return printf(":\call defx#call_action(%s, %s)\", \ string(a:action), string(args)) endfunction function! defx#async_action(action, ...) abort if &l:filetype !=# 'defx' return '' endif let args = defx#util#convert2list(get(a:000, 0, [])) return printf(":\call defx#call_async_action(%s, %s)\", \ string(a:action), string(args)) endfunction function! defx#call_action(action, ...) abort if &l:filetype !=# 'defx' return endif let context = defx#init#_context({}) let args = defx#util#convert2list(get(a:000, 0, [])) call defx#util#rpcrequest( \ '_defx_do_action', [a:action, args, context], v:false) endfunction function! defx#call_async_action(action, ...) abort if &l:filetype !=# 'defx' return endif let context = defx#init#_context({}) let args = defx#util#convert2list(get(a:000, 0, [])) call defx#util#rpcrequest( \ '_defx_async_action', [a:action, args, context], v:true) endfunction function! defx#redraw() abort call defx#util#rpcrequest('_defx_redraw', [], v:false) endfunction function! defx#get_candidate() abort if &l:filetype !=# 'defx' return {} endif return defx#util#rpcrequest('_defx_get_candidate', [], v:false) endfunction function! defx#is_directory() abort return get(defx#get_candidate(), 'is_directory', v:false) endfunction function! defx#is_opened_tree() abort return get(defx#get_candidate(), 'is_opened_tree', v:false) endfunction function! defx#get_context() abort if &l:filetype !=# 'defx' return {} endif return defx#util#rpcrequest('_defx_get_context', [], v:false) endfunction