有什么好的方法可以控制手动缩进线之后的线吗?

Is there any good way to control the line just after manual indented line?

我想按如下方式控制缩进:

#define MY_NS_MACRO namespace myns

namespace ns1 {
int a;  // indent 0 as expected
int b;  // indent 0 as expected
}

MY_NS_MACRO {
int c;  // indent 0 manually (If I press TAB here, indent 4)
 int d; // I expect indent 0, but indent 1...
}

void f() {
    int e = 0; // indent 4 as expected.
}

变量 a、b 和 e 按预期缩进。变量c,emacs 控制缩进4。但是,我想缩进0。所以我手动删除了四个空格。对我来说还好。然后,我输入下一个变量 d,我希望该行也缩进 0。但是,它是缩进的 1.有什么方法可以控制缩进吗?

这是我的 .emacs:

(defun my-c-c++-mode-init ()
  (setq c-basic-offset 4)
  (c-set-offset 'substatement-open 0)
  (c-set-offset 'innamespace 0)
  (c-set-offset 'arglist-intro '+)
  )
(add-hook 'c-mode-hook 'my-c-c++-mode-init)
(add-hook 'c++-mode-hook 'my-c-c++-mode-init)

事实证明,有一个变量干扰了你想做的事情c-label-minimum-indentation

如果你这样设置:

(setq c-label-minimum-indentation 0)  ;# default is 1

你得到你想要的缩进。