如何让Emacs在我的C ++代码中将访问级别修饰符放在他们自己的缩进级别中?

时间:2013-01-06 05:49:17

标签: emacs

我希望以类似于"bsd"样式的方式在Emacs中缩进我的C ++代码,但有一点不同:访问级别修饰符必须属于它们自己的缩进级别。 (由于我不使用switch或标签/ goto,通常可以说以冒号结尾的行必须属于它们自己的缩进级别。)以下是一个示例:

 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.
; ...

1 个答案:

答案 0 :(得分: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-c C-s 以显示CC模式的句法分析。另请务必查看c-offsets-alist的帮助。