在emacs中禁止c ++命名空间缩进

Dav*_*ave 16 c++ emacs indentation

可能重复:
Emacs - 覆盖缩进

我想要的是emacs不缩进命名空间内的代码

namespace a_namespace{

// no indentation
int namespace_global_variable;


// no indentation
class Class {
    // comment
    Class();
    //...
};

// and so on


}
Run Code Online (Sandbox Code Playgroud)

当我尝试修改innamespace变量,或者使用C-c C-o更改感兴趣点的缩进时,我没有得到预期的效果(实际上后者杀死了函数内部的所有缩进).

我的缩进配置如下所示(从Google emacs配置中复制):

(c-offsets-alist . ((arglist-intro vista-c-lineup-expression-plus-4)
                    (func-decl-cont . ++)
                    (member-init-intro . +)
                    (inher-intro . ++)
                    (comment-intro . 0)
                    (arglist-close . c-lineup-arglist)
                    (topmost-intro . 0)
                    (block-open . 0)
                    (inline-open . 0)
                    (substatement-open . 0)
                    (statement-cont
                     .
                     (,(when (fboundp 'c-no-indent-after-java-annotations)
                         'c-no-indent-after-java-annotations)
                      ,(when (fboundp 'c-lineup-assignments)
                         'c-lineup-assignments)
                      ++))
                    (label . /)
                    (case-label . +)
                    (statement-case-open . +)
                    (statement-case-intro . +) ; case w/o {
                    (access-label . /)
                    (innamespace . -))))
Run Code Online (Sandbox Code Playgroud)

sta*_*low 14

(defconst my-cc-style
  '("cc-mode"
    (c-offsets-alist . ((innamespace . [0])))))

(c-add-style "my-cc-mode" my-cc-style)
Run Code Online (Sandbox Code Playgroud)

来自Jason Zhang回答.在这里工作.

  • 不管怎样,这对我来说都不起作用,即使在重启Emacs之后也是如此.`(c-set-offset'innamespace 0)`起作用(取自http://brrian.tumblr.com/post/9018043954/emacs-fu-dont-indent-inside-of-c-namespaces) (4认同)
  • 请注意,这是从状态复制的答案*"然后使用c-set-style来使用你自己的风格."*有点缺少这方面的信息吗? (2认同)