Error handling Vim脚本:如何轻松地将数据导入cwindow

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

我使用自定义函数(当前驻留在.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=* 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