具有属性的类的Emacs访问标签缩进不正确

时间:2015-02-19 19:21:21

标签: c++ emacs indentation

Emacs版本信息:

GNU Emacs 23.4.1    

对于具有属性的类的Emacs自动缩进访问标签(即公共,私有,受保护)似乎已损坏。当类没有属性宏时,缩进是正确的。

我应该在我的.emacs文件(下面的相关行)中添加什么来解决此问题?

错误缩进的示例:

#if defined(__linux__)
#  define SO_EXPORT  __attribute__ ((visibility("default")))
#elif defined(WIN32)
#  define SO_EXPORT __declspec(dllexport)
#endif

class SO_EXPORT MyClass
   : public MyBaseClass
{
 public:                 // <--- BAD: a leading space!               
   MyClass();            // <--- correct, indentation is set to 3 spaces                                                                  
   virtual ~MyClass();
 private:                // <--- again with the space!                                                                                    
   int m_myVariable;
};

以下是运行&c-show-syntatic-information&#39;的结果。在上面的片段:

  • with macro:((标签206))
  • 无宏:((inclass 196)(访问标签196))

以下是我的.emacs文件中的相关设置:

(defun my-c-mode-common-hook ()
  (setq fill-column 130)
  (setq c-basic-offset 3)
  (local-set-key "\C-m" 'c-context-line-break)
  (c-set-offset 'substatement-open '0)
  (c-set-offset 'case-label '+)
  (c-set-offset 'arglist-cont-nonempty '++)
  (c-set-offset 'brace-list-open '0)
  (c-set-offset 'brace-list-open '0)
  (c-set-offset 'innamespace '0)

  (setq lazy-lock-defer-contextually t)
  (setq lazy-lock-defer-time 0)
  )

0 个答案:

没有答案