2013-01-06 49 views
1

我想以類似於"bsd"樣式的方式在Emacs中縮進我的C++代碼,但有一點不同:訪問級別修飾符必須屬於它們自己的縮進級別。 (因爲我不使用任何switch或標籤/ goto,它一般可以說,在一個冒號結束行必須在自己的縮進級別屬於)下面是一個例子:如何使Emacs在我的C++代碼中將自己的縮進級別的訪問級別修飾符?

class somewhat 
{ 
    private: 
    int whatever; 

    public: 
    void somehow() 
    { 
     if (something_about(whatever)) 
     like_this(); 
     else 
     { 
     std::cerr << "It is not true that something_about(" 
        << whatever << ")."; 
     like_that(); 
     } 
    } 
}; 

如何配置我的~/.emacs反映這種偏好?這是我目前的配置:

; No tabs at all. 
(setq indent-tabs-width nil) 
(setq tab-width   2) 

; [C-like languages]-specific configuration. 
(setq c-basic-offset 2) 
(setq c-default-style "bsd") 

; Configuration for other languages. 
; ... 

回答

2

您需要修改access-label縮進你c-offsets-alist。 我建議你做一個新的「風格」與自己c-offsets-alist,並添加一行:

(access-label . +)

如果你想從bsd風格導出,你可以做這樣的事情:

(c-add-style "modified-bsd" 
'("bsd" 
    (c-basic-offset . 2) 
    ;;...MORE MODS... 
    (c-offsets-alist 
    (access-label . +))))` 

另外,我是如何找到要修改的偏移量的?轉到相關的代碼行並按 C-cC-s顯示CC模式的句法分析。另外請務必檢查c-offsets-alist的幫助。

+0

它是'access-label'而不是'case-label',但是謝謝你指點我正確的方向! – pyon

+0

啊,太好了。我發誓我的眼睛看到開關+案例:)我會更新答案。 – assem