2010-10-12 60 views
1

我正好在寫這樣的事:我認爲這是在Emacs縮進模式中的錯誤

int main(int nargs, char **args) { 
    int i, j; 
    if (i > 0 && NEAR(i-1, j).dist == INFINITY) 
    { 
     NEAR(i-1, j).dist = 1.0; 
     NEAR(i-1, j).X = i; 
     NEAR(i-1, j).Y = j; 
     newWorkPoints.push_back(IPoint(i-1, j)); 
    } 
    if (j > 0 && NEAR(i, j-1).dist == INFINITY) 
    { 
     NEAR(i, j-1).dist = 1.0; 
     NEAR(i, j-1).X = i; 
     NEAR(i, j-1).Y = j; 
     newWorkPoints.push_back(IPoint(i, j-1)); 
    } 
    if (i < maxwid && NEAR(i+1, j).dist == INFINITY) 
    { 
     NEAR(i+1, j).dist = 1.0; 
     NEAR(i+1, j).X = i; 
     NEAR(i+1, j).Y = j; 
     newWorkPoints.push_back(IPoint(i+1, j)); 
    } 
    if (j < maxheight && NEAR(i, j+1).dist == INFINITY) 
    { 
     NEAR(i, j+1).dist = 1.0; 
     NEAR(i, j+1).X = i; 
     NEAR(i, j+1).Y = j; 
     newWorkPoints.push_back(IPoint(i, j+1)); 
    } 
} 

當我寫的,emacs的(2010-03-30的22.2.1,Ubuntu的),它縮進非常糟糕:

int main(int nargs, char **args) { 
    int i, j; 
    if (i > 0 && NEAR(i-1, j).dist == INFINITY) 
    { 
     NEAR(i-1, j).dist = 1.0; 
     NEAR(i-1, j).X = i; 
     NEAR(i-1, j).Y = j; 
     newWorkPoints.push_back(IPoint(i-1, j)); 
    } 
    if (j > 0 && NEAR(i, j-1).dist == INFINITY) 
    { 
     NEAR(i, j-1).dist = 1.0; 
     NEAR(i, j-1).X = i; 
     NEAR(i, j-1).Y = j; 
     newWorkPoints.push_back(IPoint(i, j-1)); 
    } 
    if (i < maxwid && NEAR(i+1, j).dist == INFINITY) 
     { 
      NEAR(i+1, j).dist = 1.0; 
      NEAR(i+1, j).X = i; 
      NEAR(i+1, j).Y = j; 
      newWorkPoints.push_back(IPoint(i+1, j)); 
     } 
     if (j < maxheight && NEAR(i, j+1).dist == INFINITY) 
      { 
       NEAR(i, j+1).dist = 1.0; 
       NEAR(i, j+1).X = i; 
       NEAR(i, j+1).Y = j; 
       newWorkPoints.push_back(IPoint(i, j+1)); 
      } 
      } 

這是在表達式中發生的<。這似乎是一個不太可能的錯誤!難道我做錯了什麼?

+0

你確定它正確地猜到了你的語言模式嗎?我同意這似乎是一個奇怪的結果。 – 2010-10-12 21:43:44

+0

FWIW我的GNU Emacs 22.3.1(i386-apple-darwin9.7.0,Carbon Version 1.6.0)的安裝非常好地縮短了您的代碼。 – 2010-10-12 21:51:14

+0

Emacs 23.2.1正確縮進代碼。 – Starkey 2010-10-12 21:55:24

回答

1

好吧,很難判斷你是否做錯了,因爲你沒有提供足夠的信息。你使用的是什麼版本的emacs?你使用的是什麼版本的cc模式?甚至是在java/C++/c-mode中的緩衝區嗎?

cc模式手冊在customizing indentation上有很好的文檔,而且經常首先開始的地方是interactive customization

+0

我確實給出了版本:(2010-03-30,Ubuntu的22.2.1)。 – 2010-10-12 23:18:56

+0

我想我會嘗試22.3,如上所述,並解決了這個問題。爲了完成,我決定重新加載22.2並顯示問題回來了......但它沒有!所以這個問題是不可重複的,至少不是我。我沒有碰到我的init文件或使用-q運行。所以我想我們在這裏完成了;感謝大家爲你的好想法明確解決了我的問題。 – 2010-10-12 23:21:19