如何修复 emacs 中的 C++ 缩进?

How to fix c++ indentation in emacs?

我一直在尝试在 emacs 中设置一个 c++ 环境,我遇到的主要问题之一就是试图按照我喜欢的方式获得缩进:

默认情况下,当我制作 class:

时,emacs 会将 private:public: 缩进到行首
class Main {
private:
public:
};

我希望它完全不缩进并保持原样:

class Main {
    private:
    public:
};

除此之外,我还想解决这个奇怪的问题,即当我尝试引用命名空间时,emacs 会前后缩进代码:

int main()  {
   std:
}

然后,一旦我添加完第二个冒号,它就会恢复到我期望的正常缩进级别:

int main() {
    std::cout << "hello world\n";
}

我通过创建自己的 c 样式并自定义 access-labellabel 句法符号的偏移量解决了这个问题:

(c-add-style "my-c-style" '((c-tab-always-indent . t)
                            (c-basic-offset . 4)
                            (c-offsets-alist (access-label . 0)
                                             (label . +))))
;; Setting this as the default style:
(setq c-default-style "my-c-style")