我正好在寫這樣的事:我認爲這是在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));
}
}
這是在表達式中發生的<。這似乎是一個不太可能的錯誤!難道我做錯了什麼?
你確定它正確地猜到了你的語言模式嗎?我同意這似乎是一個奇怪的結果。 – 2010-10-12 21:43:44
FWIW我的GNU Emacs 22.3.1(i386-apple-darwin9.7.0,Carbon Version 1.6.0)的安裝非常好地縮短了您的代碼。 – 2010-10-12 21:51:14
Emacs 23.2.1正確縮進代碼。 – Starkey 2010-10-12 21:55:24