Шаблон Emacs для отступа класса / функций - PullRequest
5 голосов
/ 24 ноября 2010

Кто-нибудь знает, как запретить Emacs делать отступы для имени функций или классов после предложения шаблона?

В настоящее время получается результат:

template <typename T>
    class A {
    /* ... */
    };

, где я хотел бы получить:

template <typename T>
class A {
/* ... */
};

Большое спасибо за вашу помощь.

РЕДАКТИРОВАТЬ 1 Я использую режим c ++ с java в качестве стиля отступа для c ++.Я настроил c-offset-alist следующим образом:

(custom-set-variables 
;;
'(c-offsets-alist (quote ((case-label . +) (innamespace . 0))))

Ответы [ 4 ]

8 голосов
/ 24 ноября 2010

Перейдите к строке class и нажмите TAB, чтобы выполнить (незапрошенный) отступ.Затем нажмите Control-C Control-O to display the indent mode for topmost-intro-cont`

Нажмите ENTER, затем вы можете изменить номер отступа (например, от 3 до 0).

В конце вашего .emacs вы можете установить эту инструкцию навсегда:

  (c-set-offset 'topmost-intro-cont 0 nil)
3 голосов
/ 24 ноября 2010

Существуют разные стили для отступов в режиме Emacs C ++. Цитирование EmacsWiki :

Частичный список наиболее известных стилей C:

  • «gnu»: стиль по умолчанию для проектов GNU
  • «K & r»: то, что Керниган и Ричи, авторы C, использовали в своей книге
  • «bsd»: что используют разработчики BSD, иначе «стиль Аллмана» после Эрика Аллмана.
  • «stroustrup»: Что Страуструп, автор C ++, использовал в своей книге
  • «linux»: Что разработчики Linux используют для разработки ядра
  • «python»: Что разработчики Python используют для модулей расширения
  • «java»: стиль по умолчанию для java-режима (см. Ниже)
  • «user»: когда вы хотите определить свой собственный стиль

переменная c-default-styleэто то, что вам нужно изменить.Возможно, один из них будет тем, что вам нужно.У меня сейчас нет Emacs, поэтому я не могу их проверить.

0 голосов
/ 24 ноября 2010

Несколько разных вещей для проверки:

Я видел похожие проблемы при редактировании файлов C ++ .h в режиме C вместо режима C ++.По умолчанию файлы .h находятся в режиме C, а не в режиме C ++.[Вы можете проверить это, посмотрев «C ++» или «C» в круглых скобках внизу вашего окна.] Вы можете настроить emacs так, чтобы он всегда открывал .h файлы как C ++, используя следующее в .emacs

(setq auto-mode-alist (append '(("\\.h\\'"   . c++-mode)
                )
                  auto-mode-alist
                  ))

Другая вещь, которую нужно проверить, это то, как вы настроили свой стиль c-default.Информационная страница "CC Mode" содержит более подробную информацию обо всех возможностях.

0 голосов
/ 24 ноября 2010

Я не знаю, но я думаю, что ваш режим имеет значение.В каком режиме вы редактируете?Я предполагаю, что c ++ - режим, потому что у вас есть c++ в качестве тега.

Для меня в c ++ - режиме это получилось так:

template <typename T>
class A {
   /* ... */
};

С комментариями с отступом, ноclass A без отступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...