skywind3000 / asyncrun.vim

:rocket: Run Async Shell Commands in Vim 8.0 / NeoVim and Output to the Quickfix Window !!
https://www.vim.org/scripts/script.php?script_id=5431
MIT License
1.86k stars 111 forks source link

g:asyncrun_code always 0 #183

Closed bstaint closed 4 years ago

bstaint commented 4 years ago

Windows上

python代码:

exit(-1)

vim命令:

AsyncRun python %
echo g:asyncrun_code
bstaint commented 4 years ago

检查了下asyncrun.cmd好像是因为VIM_PAUSE环境变量为空的原因

skywind3000 commented 4 years ago

最关键的是 asyncrun.cmd 不能改变,我必须环境变了传参。如果一个程序运行过程中,另外一个进程生成了一个新的 asyncrun.cmd 文件,那么在 windows 下上一个进程结束后会接着往下执行被修改过的 asyncrun.cmd 文件:

echo 1234
pause
echo 3333

你可以运行下这个 test.cmd,在 pause 的时候你把 333 改成 444,然后回去按回车继续,就会发现输出 444 了,鉴于这个情况,windows 下的临时文件就只能是一模一样的,否则就需要为每一次 asyncrun 运行生成一堆新的临时文件又存在污染和清理问题。

发现恶心了吧?

bstaint commented 4 years ago

看了下 pause貌似只有在os模式下才会用到,我一般用async应该可以直接去掉吧

skywind3000 commented 4 years ago

想了个办法,修了:

https://github.com/skywind3000/asyncrun.vim/releases/tag/2.6.7

bstaint commented 4 years ago

没问题了 谢了。