我认为这是emacs缩进模式中的一个错误

我认为这是emacs缩进模式中的一个错误,emacs,indentation,Emacs,Indentation,我碰巧写了这样的东西: 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.p

我碰巧写了这样的东西:

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 ));
    }
}
intmain(intnargs、char**args){
int i,j;
if(i>0&&NEAR(i-1,j).dist==无穷大)
{
近(i-1,j)。距离=1.0;
近(i-1,j)X=i;
近(i-1,j),Y=j;
新工作点。推回(i点(i-1,j));
}
如果(j>0&&NEAR(i,j-1).dist==无穷大)
{
近(i,j-1)。距离=1.0;
近(i,j-1),X=i;
近(i,j-1),Y=j;
新工作点。推回(i点(i,j-1));
}
if(i
当我写它的时候,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 ));
            }
            }
intmain(intnargs、char**args){
int i,j;
if(i>0&&NEAR(i-1,j).dist==无穷大)
{
近(i-1,j)。距离=1.0;
近(i-1,j)X=i;
近(i-1,j),Y=j;
新工作点。推回(i点(i-1,j));
}
如果(j>0&&NEAR(i,j-1).dist==无穷大)
{
近(i,j-1)。距离=1.0;
近(i,j-1),X=i;
近(i,j-1),Y=j;
新工作点。推回(i点(i,j-1));
}
if(i

这是表达式中的<的出现。这似乎是一个不太可能的错误!我做错了什么吗?

嗯,很难判断你是否做错了什么,因为你没有提供足够的信息。您正在使用哪个版本的emacs?您使用的是什么版本的cc模式?缓冲区是否处于java/c++/c模式


《抄送模式手册》有很好的文档,通常第一个开始的地方是。

好吧,很难判断你是否做错了什么,因为你没有提供足够的信息。您正在使用哪个版本的emacs?您使用的是什么版本的cc模式?缓冲区是否处于java/c++/c模式


《抄送模式手册》中有很好的文档说明,通常首先要从语言模式开始。

您确定正确猜测了您的语言模式吗?我同意这似乎是一个奇怪的结果。FWIW我安装的GNU Emacs 22.3.1(i386-apple-darwin9.7.0,碳版本1.6.0)非常好地缩进了你的代码。Emacs 23.2.1正确地缩进了代码。这里也很好地缩进了,GNU Emacs 22.1.1在c模式下。尝试用-q启动Emacs以不加载你的init文件。尝试发明,如果这是令人满意的,那么是你的配置中的某些东西造成了麻烦。你确定它正确地猜测了你的语言模式吗?我同意这似乎是一个奇怪的结果。FWIW我安装的GNU Emacs 22.3.1(i386-apple-darwin9.7.0,碳版本1.6.0)非常好地缩进了你的代码。Emacs 23.2.1正确地缩进了代码。这里也很好地缩进了,GNU Emacs 22.1.1在c模式下。尝试用-q启动Emacs以不加载你的init文件。尝试发明,如果这是令人满意的,那么它是在你的配置中引起麻烦的东西。我确实给出了版本:(22.2.1的2010-03-30,Ubuntu)。我想我应该尝试22.3,如上所述,这解决了问题。为了完整起见,我决定重新加载22.2并显示问题再次出现…但它没有!!!所以这个问题是不可复制的,至少我是这样认为的。我没有接触我的init文件,也没有使用-q运行。我想我们到此为止;谢谢大家的好想法,很明显解决了我的问题。我确实给出了版本:(2010-03-30的22.2.1,Ubuntu)。我想我应该试试22.3,正如上面建议的,这解决了问题。为了完整起见,我决定重新加载22.2并显示问题再次出现…但它没有!!!所以这个问题是不可复制的,至少我是这样认为的。我没有接触我的init文件,也没有使用-q运行。我想我们到此为止;谢谢大家的好想法,很明显解决了我的问题。