C+的emacs公共/受保护/专用标签缩进+;头文件不适用于零偏移量 我在Emacs中的C++头文件中,即使在我的.Emacs文件中定义了,也不能得到零偏移。

C+的emacs公共/受保护/专用标签缩进+;头文件不适用于零偏移量 我在Emacs中的C++头文件中,即使在我的.Emacs文件中定义了,也不能得到零偏移。,c++,emacs,indentation,C++,Emacs,Indentation,下面的头文件显示了两个名称空间中的类定义,最重要的是我希望具有零偏移量的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::S

下面的头文件显示了两个名称空间中的类定义,最重要的是我希望具有零偏移量的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)
我使用Ctrl-C Ctrl-S查找要修改的内容。我在.emacs文件中定义的其他偏移量工作正常,对于label,0以外的值也工作正常

当我为标签设置偏移量0时,当点击该行的制表符时,结果是1。这很奇怪,看起来有其他东西正在覆盖或添加最小值1

有人能解释一下我是如何实现我想要的,也许还有人能解释一下目前正在发生的事情吗

这是我在这里的第一个问题。谢谢:)

更新:

多亏了这些答案,我才能够走得更远一些,但总体上仍然没有解决方案,因为更改访问器的总偏移量0所需的内容会导致其他我不想要的内容。Thsi是我目前所处的位置:

(c-set-offset 'access-label 0)

我还需要把.h文件作为C++来理解,所以我添加了:

(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
仅此一项并没有删除我看到的1偏移量,但似乎还有用于访问器的inclass。将其设置为0实际上会导致总偏移量为0

(c-set-offset 'inclass 0)
问题是,现在其他东西(如成员)的总数为0,如下所示:

class Foo
{
public:
Foo();
~Foo();
为了解决这个问题,我将最上面的介绍改为偏移量4

(c-set-offset 'topmost-intro 4)
这反过来又导致了其他更改,例如同一文件中的内联函数声明。总而言之,我不知道如何按照我想要的方式调整它

更新2:


添加了不带偏移量的SomeClass构造函数的内联声明。

我相信您希望使用access标签而不是label。请参阅< < /P> < p>您希望代码>访问标签< /C> >而不是标签,如果C-C-C-S给了您<代码>((标签1))< /C> >这意味着您处于C模式而不是C++模式(C模式是默认的<代码> .H/COD>文件)。如果这是您的问题,请添加

// Emacs, please set these
// Local Variables: ***
// mode: c++ ***
// End: ***
到.h文件的结尾,或

// -*- C++ -*-
开始时。

如果使用

(c-set-offset 'innamespace 0)

那么名称空间的大括号不会增加缩进级别。

我想您可能需要使用负数。例如,在我的
c-offset-alist
中,我有:

(inclass . +)
然后在
.emacs
中:

(c-set-offset 'access-label -1)
这让我得到了我想要的:

class A {
 public:
  A();
  ...

这并没有完全给出我想要的结果,因为访问标签0将与标签0相同。1个偏移量来自另一个偏移量。innamespace偏移量的值是多少?(我不想提及inclass,并指出负偏移量是可能的,因为它们是累积的)。我也在研究这一点,但这会把其他事情搞砸,因为我希望名称空间内的事情的偏移量为0。也许我只是需要改变一下我想要它的样子同样,访问标签本身也没有帮助,但您提供的链接为我提供了添加1的必要信息。顺便说一句,您可以保留inclass偏移量,并为访问标签符号使用负偏移量。