let s:playId = 0 fu! s:handler(id, data, event) abort if a:event ==# 'exit' echom 'job ' . a:id . ' exit with code:' . string(a:data) let s:playId = 0 endif endf function! zvim#mpv#stop() abort if s:playId != 0 call jobstop(s:playId) let s:playId = 0 endif delcommand MStop endfunction function! zvim#mpv#play(file,...) abort if has('nvim') if s:playId != 0 call jobstop(s:playId) let s:playId = 0 endif let s:playId = jobstart(['mpv','--vid=no',a:file],{ \ 'on_stdout': function('s:handler'), \ 'on_stderr': function('s:handler'), \ 'on_exit': function('s:handler'), \ }) else if type(s:playId) == 8 && job_status(s:playId) ==# 'run' call job_stop(s:playId) let s:playId =0 endif let s:playId = job_start(['mpv','--vid=no',a:file]) endif command! MStop call zvim#mpv#stop() endfunction