即使我在.emacs文件中定义了零偏移量,但是我无法在emacs中为我的C++头文件中的某些内容获得零偏移量。
下面的头文件显示了两个命名空间内的类定义,最重要的是我想要使用以下方式的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以外的其他值也可以正常工作。
当我将label的偏移量设置为0时,按下tab键后它变成了1。这很奇怪,看起来好像有其他东西覆盖或添加了至少1个值。
有人能解释一下我如何实现我的目标,也许还能解释一下当前发生了什么吗?
哎呀,这是我在这里的第一个问题。谢谢 :)
更新:
感谢答案,我已经能够走得更远了,但总体上仍没有解决方案,因为改变必要的事情以获得accessors的总偏移量为0会导致我不想要的其他事情发生。这就是我目前的情况:
(c-set-offset 'access-label 0)
我还需要让.h文件被识别为C++,所以我添加了:
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
单独这样做并不能消除我看到的1个偏移量,但似乎访问器中也有inclass。将其设置为0实际上会导致完全没有偏移。
(c-set-offset 'inclass 0)
问题是现在其他的项目,如成员,总数为0,如下所示:
class Foo
{
public:
Foo();
~Foo();
为了解决这个问题,我将 "topmost-intro" 改为偏移量 4。
(c-set-offset 'topmost-intro 4)
这反过来导致了其他变化,例如同一文件中的内联函数声明。总的来说,我不确定怎样才能按照我想要的方式进行微调。
更新2:
添加了无偏移量的SomeClass构造函数的内联声明。