Формат структур с использованием emacs c авто-новой строкой кода - PullRequest
1 голос
/ 17 января 2012

Я недавно начал использовать emacs для редактирования исходного кода C и использовал функцию авто-новой строки в cc-mode (c-toggle-auto-newline).Это хорошо работает для конструкций, подобных функциям и операторам if / else, но кажется странным, когда после закрывающей скобки следует точка с запятой.

Использование автоматического перевода строки в GNU Emacs 23.3 Я получаю:

struct foo
{
    int x;
}
    ;

char int[2] =
  {
    0, 1
  }
  ;

Вместо этого я хотел бы получить:

struct foo {
    int x;
};

char int[2] = { 0, 1 };

Как сделать так, чтобы заключительная точка с запятой оставалась на той же строке, что и закрывающая скобка?

Ответы [ 2 ]

1 голос
/ 17 января 2012

Я не думаю, что вы можете обойти эту проблему с включенным автоматическим переводом строки.Это не очень продуманная функция, она просто вставляет новые строки после определенных символов (;, { и т. Д.).А если серьезно, насколько сложно нажать и ввести клавишу?Любая автоматизация всегда подвержена ошибкам.

0 голосов
/ 19 июля 2012

Вы можете настроить поведение «очистки» при включенном автоматическом переводе строки.Это контролируется содержимым переменной c-cleanup-list.(Просмотрите справку об этом в Emacs, введя C-h v c-cleanup-list.

В частности, добавление defun-close-semi к c-cleanup-list решит вашу проблему.

Если вы уже определяете собственный стиль вваш файл ~/.emacs, тогда вы, вероятно, сможете выяснить, как это сделать. В противном случае проще всего изменить этот параметр с помощью Customize. В буфере помощи (отображается, когда вы запустили C-h v c-cleanup-list), последняя строка будетесть ссылка для настройки этой переменной.

...