0
点赞
收藏
分享

微信扫一扫

vim学习异步源码


​echohl​​​,按后面​​高亮组​​显示.

回音高亮 错误消息
echo 消息
回音高亮

安静跑异步命令:

silent doautocmd User AsyncRun name

​haslocaldir​​​,是否有​​lcd/tcd​​​.
​​​fnameescape​​​,转义​​文件名​​​.
​​​ssl​​​选项,​​壳斜杠​​​.
​​​winrestview/winsaveview​​​保存恢复视图.用​​w:​​​变量.调用后,解置该​​w:​​​.
​​​caddexpr​​​加表达式结果至​​快修​​.

caddexpr a:textlist
//用表达式列表建立快修
noautocmd caddexpr a:textlist
call setqflist(items, 'a')
//置快修列表.
noautocmd call setqflist(items, 'a')
call setqflist([], 'a', info)
noautocmd call setqflist([], 'a', info)
if &buftype == 'quickfix'
//缓冲类型
silent exec 'normal! G'
//跳至尾.

​cbottom​​​,光标放至​​快修尾​​​.
​​​bufwinnr​​​,窗口缓冲号.​​-1​​​表不存在.
​​​noautocmd​​​,为单个命令,​​屏蔽​​自动命令.

noautocmd exec '' . l:quickfixwinnr . 'windo call s:AsyncRun_Job_Cursor()'
noautocmd silent! exec ''.l:winnr.'wincmd w'

​wincmd​​​,移动光标窗口.
​​​pumvisible​​​,是否看见​​弹窗​​​.​​iconv​​用法:

let l:text = iconv(l:text, 编码, &编码)

修复路径:

silent! call s:chdir(l:previous_cwd)

安静执行自动命令:

silent exec 'doautocmd QuickFixCmdPre ' . name
silent exec 'doautocmd QuickFixCmdPost '. name
//前面和后面.执行快修命令前/后
exec 'doautocmd QuickFixCmdPre '. name
//不安静

异步工作:

if exists('s:async_job')
call job_status(s:async_job)

如果有​​异步工作​​​,调用其​​状态​​.

"norm! \<esc>"

退出.
​​​redrawstatus​​​,重画​​状态行​​​,
​​​ch_status​​​,通道状态.
​​​ch_read​​,读通道加选项.

通道状态(a:通道)=='缓冲'

表示,可读​​通道​​.

if exists('s:async_job')
call job_status(s:async_job)

有​​异步工作​​,返回状态.

if job_status(s:async_job) == 'run'
let l:running = 1

异步工作:

let s:async_job = job_start(l:args, l:options)
//参数,加选项,这才是关键.
let l:success = (job_status(s:async_job) != 'fail')? 1 : 0

silent! call ch_close_in(job_getchannel(s:async_job))

加计时器:

let l:name = 'g:AsyncRun_Job_OnTimer'
let s:async_timer = timer_start(100, l:name, {'repeat':-1})
call s:AsyncRun_Job_AutoCmd(0, s:async_info.auto)
call s:AutoCmd('Start')
redrawstatus!

​异步停止​​,可能错误:

if job_status(s:async_job) == 'run'
if job_stop(s:async_job, l:how)
call s:AutoCmd('Interrupt')
return 0
else
return -2
endif
else

​keepalt​​​保持​​轮换名​​.

keepalt noautocmd windo call s:WindowCheck(1)
keepalt noautocmd silent! exec ''.l:winnr.'wincmd w'


举报

相关推荐

0 条评论