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検出器には、メッセージを取得する1行しかありません。それらをさらに追加する必要があります。%-C線の上のどこかに以下を追加します。

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

あなたはおそらくaaptメッセージに対しても同様のことをしたいと思うでしょうが、それらがワンライナーであるなら、あなた%Aはその行を始める部分を打つだけだと思います。これは、複数行のメッセージの開始であるため、aが一致%Aするまで、それに続くすべてがaaptメッセージの一部であると見なされることを意味します。ビットは「これに一致するのは面白くない」と言っています%Z%-Cこれらは、vimにスキップするように指示した複数行メッセージの内容(たとえば、表示されていないもの)です。

于 2012-12-21T02:32:18.067 に答える