简体   繁体   English

我认为这是emacs缩进模式下的错误

[英]I think this is a bug in emacs indent mode

I happened to be writing something like this: 我碰巧正在写这样的东西:

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 ));
    }
}

When I wrote it, emacs (22.2.1 of 2010-03-30, Ubuntu) indented it very badly: 当我写它的时候,emacs(Ubuntu于2010-03-30的22.2.1)严重缩进了它:

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 ));
            }
            }

It's the occurence of the < in the expression that's doing it. 正是<出现在表达式中。 This seems like an unlikely bug! 这似乎是一个不太可能的错误! Am I doing something wrong? 难道我做错了什么?

Well, it's hard to tell if you're doing something wrong as you didn't really give enough information. 好吧,由于您没有真正提供足够的信息,很难判断您是否做错了什么。 What version of emacs are you using? 您正在使用哪个版本的emacs? What version of cc-mode are you using? 您正在使用哪个版本的cc-mode? Is the buffer even in java/c++/c-mode? 缓冲区是否甚至在java / c ++ / c-mode中?

The cc-mode manual has good documentation on customizing indentation , and often the first place to start is with interactive customization . cc-mode手册具有有关自定义缩进的良好文档,并且通常最开始的地方是交互式自定义

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM