Если вы не возражаете, что поведение будет только почти, но не совсем так, как вы описали, есть встроенный способ сделать это. Это функция автоматического перехода на новую строку, которую можно активировать с помощью комбинации клавиш C-c C-a
или этой строки .emacs:
(c-toggle-auto-newline 1)
Разница в том, что он выполнит переформатирование сразу после ввода открывающей скобки {. Когда вы, наконец, введете закрывающую скобку, она тоже будет иметь правильный отступ.
Вам также необходимо установить правильный стиль CC Mode. Стиль "cc-mode", кажется, определяет вещи так, как вы это описали. Вы можете активировать его с помощью комбинации клавиш C-c .
и затем выбрать cc-mode или строку .emacs
(c-set-style "cc-mode")
Функции c-mode загружаются автоматически и поэтому обычно не будут доступны при загрузке файла .emacs. Поэтому вы должны обернуть их в ловушку для c-режима, как это
(add-hook 'c-mode-hook
(lambda ()
(c-toggle-auto-newline 1)
(c-set-style "cc-mode")))