Emacs отступ отступа после оператора switch - PullRequest
8 голосов
/ 05 июня 2009

Прямо сейчас стандартное отступ Emacs работает следующим образом:


switch (cond) {
case 0: {
  command;
}
  break;
}

Я хочу перерыв; выровнять с делом.

Кроме того, есть ли где-нибудь список команд c-set-offset?

Ответы [ 2 ]

22 голосов
/ 05 июня 2009

Самая большая помощь (которую я нашел) в настройке отступов - это выяснение того, что cc-режим использует для отступа текущей строки. Вот что может сделать Cc Co aka Mx c-set-offset - это позволит вам настроить смещение для синтаксического элемента и покажет, какой элемент использовался для текущая строка!

Вот как вы можете настроить его. Переместите курсор на строку break;.

C-c C-o RET 0 RET

В этот момент ваш код будет с отступом, как:

switch (cond) {
case 0: {
  command;
}
break;
}

Для получения документации о смещениях, проверьте строку документации для переменной 'c-offsets-alist

C-h v c-offsets-alist RET

Точно так же вы можете добавить это к вашему .emacs:

(setq c-offsets-alist '((statement-case-intro . 0)))

Документация для настройки отступа здесь и ее стоит прочитать. Есть множество способов сделать это, поэтому чтение руководства стоит времени (если вы хотите сделать отступ не по умолчанию). А вот указатель на все синтаксические символы , используемые в режиме cc.

0 голосов
/ 06 ноября 2015

Для меня, чтобы правильно получить операторы php-mode switch для отступа:

      (c-set-offset (quote brace-list-entry) 2 nil)
      (c-set-offset (quote case-label) 2 nil)

Но, как уже упоминали другие, C-c C-o твой друг .....

...