2014-09-20 20 views
1

我在Windows上使用Emacs 24.3。我有自動縮進設置,但我想在C++構造函數只縮進一個級別。我讀過,設置子狀態開放值爲0可以解決這個問題,但是,我仍然有這個問題。Emacs自動縮進可以防止構造函數上的雙縮進

什麼我目前看到:

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

嘗試修改my-cpp-mode-hook設置inline-open0以及:

(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))