1

目前efm我在 mac 上使用的是set efm=%A\ %#[javac]\ %f:%l:\ %m,%A\ %#[aapt]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%#. 它实际上可以定位错误位置并显示简短的错误信息,但我只能通过切换到终端来获得详细信息。

顺便说一句,efm 在archlinux 上工作得很好。

这是输出:

-compile:
    [javac] Compiling 8 source files to /Users/ccheng/workspace_tb/Android_RollingBall/bin/classes
    [javac] /Users/ccheng/workspace_tb/Android_RollingBall/src/hongbosb/rollingball/GLDrawable.java:22: incompatible types
    [javac] found   : void
    [javac] required: int
    [javac]         mEnvProgram = Utils.loadProgram(context, "environment_vertex_shader.glsl", "environment_fragment_shader.glsl");
    [javac]                                        ^
    [javac] /Users/ccheng/workspace_tb/Android_RollingBall/src/hongbosb/rollingball/EnvironmentGLDrawable.java:15: cannot find symbol
    [javac] symbol  : constructor GLDrawable()
    [javac] location: class hongbosb.rollingball.GLDrawable
    [javac]     public EnvironmentGLDrawable(Context context) {
    [javac]                                                   ^
    [javac] /Users/ccheng/workspace_tb/Android_RollingBall/src/hongbosb/rollingball/MyRenderer.java:31: cannot find symbol
    [javac] symbol  : variable context
    [javac] location: class hongbosb.rollingball.MyRenderer
    [javac]         mEnvironment = new EnvironmentGLDrawable(context);
    [javac]                                                  ^
    [javac] 3 errors

以下是我的 vim 错过的内容。

[javac] found   : void
        [javac] required: int
        [javac]         mEnvProgram = Utils.loadProgram(context, "environment_vertex_shader.glsl", "environment_fragment_shader.glsl");
        [javac]                                        ^
        [javac]
4

1 回答 1

2

好的,我将重新格式化它,以便(对我)更容易处理......

let fmt = '%A\ %#[javac]\ %f:%l:\ %m,'
      \ . '%A\ %#[aapt]\ %f:%l:\ %m,'
      \ . '%-Z\ %#[javac]\ %p^,'
      \ . '%-C%.%#'
execute 'set errorformat=' . fmt

javac 检测器中只有一行可以获取消息。您只需要添加更多。在该行上方的某处添加以下内容%-C

      \ . '%C\ %#[javac]\ %m,'

您可能还想为 aapt 消息做类似的事情,尽管如果这些是单行的,那么我认为您只需敲击%A开始其行的部分;%A意味着它是多行消息的开始,因此它会将其后的所有内容视为 aapt 消息的一部分,直到%Z匹配到 a。位说“这个%-C匹配是无趣的”;这些是您告诉 vim 跳过的多行消息中的内容(例如未显示的内容)。

于 2012-12-21T02:32:18.067 回答