我使用自定义函数(当前驻留在 .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>)
在命令模式下使用新命令时,不会出现错误窗口。
:CompileMyCode | cwindow
我究竟做错了什么?
编辑:
我现在尝试了以下也不会打开任何 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
谢谢你的回答!
最佳答案
我使用 cexpr l:output
而不是返回字符串做了类似的事情,并将编译的输出放在 quickfix 窗口中。你可以在这里看到我的 vim 功能:http://www.zenskg.net/wordpress/?p=199
更新
在 quickfix 列表中添加一个空行似乎允许 cwindow 出现。例如:
function! MyCompile()
let l:output = "Error: line 1"
cexpr l:output
caddexpr ""
cwindow
endfunction
关于error-handling - Vim 脚本 : How to easily pipe data into the cwindow,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7071682/