Как я могу исправить отступ emacs в инициализаторах C ?

#emacs #elisp #auto-indent

#emacs #elisp #автоматический отступ

Вопрос:

Emacs неправильно делает отступы в определениях классов C для распределителей, в которых есть инициализаторы с двоеточиями. Я думаю, это потому, что строки с двоеточиями во многих случаях имеют отступ слева.

Я хотел бы это исправить.

Вот пример того, о чем я говорю.

EMACS делает отступы в коде следующим образом:

 class demo {
    int x;
    demo(){
    }
 demo(int y):x(y){
    };
};
  

Но на самом деле отступ должен быть таким:

 class demo {
    int x;
    demo(){
    }
    demo(int y):x(y){
    };
};
  

Есть ли способ исправить это поведение? Предположительно, нам нужен какой-нибудь elisp…

Спасибо!

Комментарии:

1. @nightcracker: Я думаю, что вопросы Emacs здесь хороши. Более того, это может легко иметь решение, включающее программирование в elisp, и это, несомненно, связано с программированием.

Ответ №1:

Emacs (по крайней мере, версии 23) не делает этого в режиме C, но делает в режиме C , поскольку в C часть перед двоеточием может быть только меткой. Убедитесь, что вы находитесь в режиме C ( M-x c -mode ).

Комментарии:

1. Вы правы! .h по умолчанию используется режим C; Я изменил его на режим C в моем файле .emacs. Спасибо!

2. Другой вариант — использовать .hpp для файлов заголовков C .

3. О, я нахожу .hpp таким невероятно грубым.