Error handling Vim脚本:如何轻松地将数据导入cwindow
我使用自定义函数(当前驻留在.vimrc中)而不是:make或其他直接命令行工具来编译/检查当前编辑的文件是否存在错误。像这样:Error handling Vim脚本:如何轻松地将数据导入cwindow,error-handling,vim,Error Handling,Vim,我使用自定义函数(当前驻留在.vimrc中)而不是:make或其他直接命令行工具来编译/检查当前编辑的文件是否存在错误。像这样: function! CompileMyCode(...) set errorformat=Error:\ %m\\,\ in\ line\ %l let l:output = "Error: bad code!, in line 9" return l:output endfunction command! -nargs=* CompileMy
function! CompileMyCode(...)
set errorformat=Error:\ %m\\,\ in\ line\ %l
let l:output = "Error: bad code!, in line 9"
return l:output
endfunction
command! -nargs=* CompileMyCode :call CompileMyCode(<f-args>)
我做错了什么
编辑:
我现在尝试了以下也不会打开任何cwindow的方法
function! CompileMyCode(...)
set errorformat=Error:\ %m\\,\ in\ line\ %l
let l:output = "Error: bad code!, in line 9"
" I tried both of the following lines separately
cexpr l:output
call setqflist([l:output])
endfunction
在我的示例中,建议的命令cexpr
和setqflist()
无法正确打开cwindow。也许有人能提出一个完整的解决方案
编辑2:
主要问题解决了。这是我目前的代码:
let l:result = expand("%").'|8| errortext'
cexpr [ l:result, l:result ]
caddexpr ''
cwindow
此示例使用vim似乎支持的默认错误格式。当cexpr
调用实际错误输出并使用errorformat
时,cwindow
似乎忽略了这一点
尽管如此,我还是希望在输出中坚持默认的错误格式,而不必依赖自定义的errorformat
谢谢你的回答 如果您已经可以在Vim中以结构化数据的形式访问错误信息(或者可以轻松获取),则可以使用
setqflist()
我使用cexpr l:output
做了类似的事情,而不是返回字符串,并将编译输出放在quickfix窗口中。您可以在此处看到我的vim功能:
更新
在快速修复列表中添加一个空行似乎允许出现cwindow。例如:
function! MyCompile()
let l:output = "Error: line 1"
cexpr l:output
caddexpr ""
cwindow
endfunction
function! MyCompile()
let l:output = "Error: line 1"
cexpr l:output
caddexpr ""
cwindow
endfunction