Я не могу получить нулевое смещение для некоторых вещей для моих заголовочных файлов C ++ в emacs, даже если оно определено в моем файле .emacs.
Файл заголовка ниже показывает определение класса в двух пространствах имен и, что наиболее важно, публичное ключевое слово, которое я хотел бы иметь со смещением нуля, как показано ниже.
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)
Я использовал Ctrl-C Ctrl-S, чтобы узнать, что нужно изменить. Другие смещения, которые я определил в файле .emacs, работают нормально, а также значения, отличные от 0, работают для метки.
Когда я устанавливаю смещение 0 для метки, оно оказывается равным 1 при нажатии на вкладку для этой строки. Это странно и выглядит так, как будто что-то переопределяет или добавляет минимум 1.
Может кто-нибудь объяснить, как я могу достичь того, чего я хочу, и, возможно, также объяснить, что происходит в настоящее время?
Фу, это был мой первый вопрос здесь. Спасибо:)
UPDATE:
Благодаря ответам мне удалось продвинуться немного дальше, но в целом решения пока нет, потому что изменение вещей, необходимых для получения полного смещения 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 на offset 4
(c-set-offset 'topmost-intro 4)
Что, в свою очередь, привело к другим изменениям, например: встроенные объявления функций в том же файле. В общем, я не уверен, как настроить это так, как я хочу.
UPDATE2:
Добавлено встроенное объявление ctor SomeClass без смещения.