2012-12-18 29 views
1

目前我在mac上使用的efmset efm=%A\ %#[javac]\ %f:%l:\ %m,%A\ %#[aapt]\ %f:%l:\ %m,%-Z\ %#[javac]\ %p^,%-C%.%#。它實際上可以找到錯誤位置並顯示一個簡短的錯誤信息,但是我只能通過切換到終端來獲取詳細信息。尋找更好的錯誤格式,當用螞蟻在mac上編譯vim

順便說一句,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] 

回答

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%-C位表示「匹配這是無趣的」;這些都是你告訴vim跳過的多行消息中的東西(例如沒有顯示的東西)。

+1

太棒了!我如何在一年後將此標記爲正確答案!謝謝。 –