Closed voldikss closed 4 years ago
terminal 本身就不是一个文件啊,取 root 取啥呢?
emmm 也对,主要是万一有时光标在 terminal 里面,想要执行一些 tasks,会找不到项目根目录。
所以asynctask在这些buffer上做了限制
原来如此,我明白了。
我修正了一下,因为 terminal 很常用,所以 fullname 判断了一下 terminal buffer,如果是的话会返回vim 的当前目录。
最终解决这事情,或许要用 vim 的当前目录作为项目目录了,跟 vscode 一样。asyncrun 里面的宏 $(VIM_CWD)
和 <cwd>
都指代当前目录。
我另外加了个 $(VIM_WORKSPACE)
或者叫 <workspace>
的宏,内容是:b:asyncrun_workspace
, t:asyncrun_workspace
和 g:asyncrun_workspace
中的一个(按优先级读取),避免有些插件无意中修改了 vim 当前目录。
https://github.com/skywind3000/asyncrun.vim/releases/tag/2.7.2
小修正,删除 $(VIM_WORKSPACE)
引起混乱的东西,任务配置也不太好写。
而会顺序读取:b:asyncrun_root
, t:asyncrun_root
和 g:asyncrun_root
几个值,一旦发现设置过,就当作 project root.
https://github.com/skywind3000/asyncrun.vim/releases/tag/2.7.5
如果在 terminal 中执行
expand('%')
,并不会扩展成文件的全路径。在 vim 中 执行
expand('%')
得到!/usr/bin/zsh
,在 nvim 中得到term://.//27095:zsh
问题相关代码:
https://github.com/skywind3000/asyncrun.vim/blob/0fca49c72224395ed5f6e756687e40bb5e5ce20f/plugin/asyncrun.vim#L955