我已在Emacs中为自动补全设置了一个环境,使用clang 2.8作为解析器。它运行良好,但是需要在补全之前将当前编辑的缓冲区保存到文件中。这样很慢,因此我正在尝试让clang通过stdin解析给定的文件,但是目前还没有成功。
当解析文件时,我输入的命令行如下:
这个很有效。但是尝试从stdin读取失败了。我试过这个:
但这会导致clang在不做任何完成的情况下终止,并打印警告:
有什么想法吗?
当解析文件时,我输入的命令行如下:
clang -cc1 -fsyntax-only -Iinclude/ -code-completion-at foo.cpp:10:20 foo.cpp
这个很有效。但是尝试从stdin读取失败了。我试过这个:
cat foo.cpp | clang -xc++ -cc1 -fsyntax-only -Iinclude/ -code-completion-at -:10:20 -
但这会导致clang在不做任何完成的情况下终止,并打印警告:
clang: warning: argument unused during compilation: '-cc1'
clang: warning: argument unused during compilation: '-code-completion-at'
clang: warning: argument unused during compilation: '-:10:20'
有什么想法吗?
clang -cc1 -x c++ -fsyntax-only -code-completion-at -:7:15 - <test.cc
就可以正常工作。顺便说一下,这是Clang 2.0版本。 - Hugh