Я не могу получить нулевое смещение для некоторых вещей для моих файлов заголовков C ++ в emacs, даже если оно определено в моем файле .emacs.
Заголовочный файл ниже показывает определение класса внутри двух пространств имен и, что наиболее важно, ключевое слово public, которое я хотел бы иметь с нулевым смещением, как показано ниже.
namespace n1
{
namespace n2 // no offset
{
class SomeClass // no offset from namespace open curly
{
public: // this line with zero offset
SomeClass(); // offset 4
...
};
inline SomeClass::SomeClass() // no offset
{
}
} // n2
} // n2
В моем файле .emacs я добавил такую метку:
(c-set-offset 'label 0)
I использовал Ctrl-C Ctrl-S, чтобы узнать, что нужно изменить. Другие смещения, которые я определил в файле .emacs, работают нормально, а также значения, отличные от 0, работают для метки.
Когда я устанавливаю смещение 0 для метки, оно оказывается равным 1 при нажатии табуляции для этой строки. Это странно и похоже, что что-то еще заменяет или добавляет минимум 1.
Может ли кто-нибудь объяснить, как я могу достичь того, что я хочу, а также, возможно, объяснение того, что происходит в настоящее время?
Уф, это был мой первый вопрос Вот. Спасибо :)
ОБНОВЛЕНИЕ:
Благодаря ответам я смог продвинуться немного дальше, но все еще не нашел решения в целом, потому что изменение вещей, необходимых для получения общего смещения 0 для аксессоров, приводит к другим вещам, которые я не делаю. не хочу. Вот где я сейчас:
(c-set-offset 'access-label 0)
Мне также нужно было получить файл .h, чтобы он выглядел как C ++, поэтому я добавил:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
Одно только это не удаляет 1 смещение, которое я видел, но похоже, что есть также включает аксессуар. Установка этого значения на 0 фактически приводит к общему смещению 0.
(c-set-offset 'inclass 0)
Проблема в том, что теперь другие вещи, такие как члены, имеют в сумме 0, как показано ниже:
class Foo
{
public:
Foo();
~Foo();
Чтобы исправить это, я изменил topmost-intro на смещение 4
(c-set-offset 'topmost-intro 4)
, что, в свою очередь, привело к другим изменениям, например, для объявлений встроенных функций в тот же файл. В общем, я не уверен, как настроить это так, как я хочу.
UPDATE2:
Добавлено встроенное объявление SomeClass ctor без смещения.