在使用ninja和clang++时,vim中的快速修复列表是什么?

8
我有一个C++项目,使用ninja和clang++编译,希望在快速修复列表中显示编译期间出现的错误。目前,当我设置makeprg=ninja并运行:make时,由ninja生成的所有输出都会出现在快速修复窗口中,无法用于跳转到相应的文件/行等。
我不需要syntastic提供的功能(我已经在使用),但我也想看到来自项目中其他文件的错误,类似于IDE提供的功能。
如果使用ninja难以实现这一点,也欢迎使用make的解决方案(该项目使用cmake,因此两者都可行),但如果可能的话,我希望继续使用ninja。
2个回答

4

Ninja生成的所有输出都会显示在快速修复窗口中,无法用于跳转。

这听起来像是Vim无法解析错误信息中的位置信息,因为适当的'errorformat'没有被设置。

搜索一下,也许已经有人写了类似的东西。否则,你需要编写自己的编译器插件,然后使用:compiler ninja而不是:set makeprg=ninja。请参阅:help write-compiler-plugin


是的,那看起来像是一个起点。但我对使用ninja作为我的:compiler有些犹豫,因为它只是make程序,而clang++才是真正的编译器。然而,看了一下compiler/gcc.vim文件,似乎这也使用了一个根据make输出量身定制的errorformat - Futile

0

CMake+Ninja使用相对路径。这在Vim中是个问题。Vim使用算法尝试猜测引发错误的文件位置。您可以在:h quickfix-directory-stack找到后者的描述。 此外,请查看这里:https://gitlab.kitware.com/cmake/cmake/-/issues/13894。 CMake开发人员已经意识到这一点,并有一个未解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接