Emacs - 覆盖缩进

Any*_*orn 23 c++ emacs namespaces indentation

我有一个多重嵌套的命名空间:

namespace first {namespace second {namespace third {
              // emacs indents three times
    // I want to intend here
} } }
Run Code Online (Sandbox Code Playgroud)

所以emacs缩进到第三个位置.但是我只想要一个缩进.
是否有可能简单地完成这种效果?

Jür*_*zel 24

在命名空间内使用绝对缩进列:

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

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

然后使用c-set-style来使用自己的风格.

请注意,这仅适用于c ++模式,c模式不知道'innamespace'.


Tat*_*ela 18

使用Emacs 23中的c ++模式,我必须这样做:

(defun my-c-setup ()
   (c-set-offset 'innamespace [4]))
(add-hook 'c++-mode-hook 'my-c-setup)
Run Code Online (Sandbox Code Playgroud)

要完全禁用名称空间中的缩进,请将[4]更改为0.

  • 比公认的解决方案更好的解决方案,它要求您扰乱您正在使用的实际样式(并且不告诉您如何操作)。接受的答案对我不起作用,这对我有用。 (2认同)