Emacs自动缩进可防止构造函数上的双缩进

时间:2014-09-20 17:50:08

标签: emacs indentation

我在Windows上使用Emacs 24.3。我有自动缩进设置,但我想在C ++中只有缩进一级的构造函数。我已经读过将substatement-open值设置为0可以解决这个问题,但是,我仍然遇到这个问题。

我目前看到的内容:

class A 
{  
public:
    A() 
        {
            // code
        }    
};

我想看到的内容:

class A 
{  
public:
    A() 
    {
        // code
    }    
};

是否有人能够告诉我我的.emacs中有什么错误或缺失以纠正这个问题?

(setq c-default-style "stroustrup"
      c-basic-offset 4)

; no extra indentation on constructors
(defun my-cpp-mode-hook ()
  (setq c-basic-offset 4)
  (c-set-offset 'substatement-open 0))
(add-hook 'c++-mode-hook 'my-cpp-mode-hook)

; auto-indentation
(add-hook 'c-mode-common-hook (lambda () (c-toggle-auto-state 1)))

1 个答案:

答案 0 :(得分:1)

尝试修改my-cpp-mode-hook以将inline-open设置为0

(defun my-cpp-mode-hook ()
  (setq c-basic-offset 4)
  (c-set-offset 'substatement-open 0)
  (c-set-offset 'inline-open 0))

通常,您可以通过移动到相关行并使用c-mode(默认情况下绑定到c-show-syntactic-information)检查C-c C-s(和类似模式)中的缩进规则,其中这个案例给出了Syntactic analysis: ((inclass 10) (inline-open))