Я думаю, что это ошибка в режиме отступа Emacs - PullRequest
1 голос
/ 13 октября 2010

Я случайно написал что-то вроде этого:

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 (22.2.1 из 2010-03-30, 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 ));
            }
            }

Это проявление <в выражении, которое делает это. Это похоже на маловероятную ошибку! Я что-то не так делаю? </p>

1 Ответ

1 голос
/ 13 октября 2010

Что ж, трудно сказать, что вы делаете что-то не так, потому что вы не дали достаточно информации.Какую версию Emacs вы используете?Какую версию cc-mode вы используете?Является ли буфер даже в java / c ++ / c-mode?

В руководстве по cc-mode есть хорошая документация по настройке отступа , и часто первое место для начала - интерактивная настройка .

...