我经常使用DLL导出/导入规范编写类,但这似乎混淆了emacs的语法分析器。我最终得到了类似的东西:
class myDllSpec Foo {
public:
Foo( void );
};
请注意,“public:”访问规范缩进不正确,以及其后的所有内容。
当我要求emacs描述包含public的行开头的语法时,我得到一个返回:
((label 352))
如果我删除myDllSpec,缩进是正确的,emacs告诉我那里的语法是:
((inclass 352) (access-label 352))
这似乎是正确和合理的。所以我得出结论,语法解析器无法处理DLL导出规范,这就是导致压痕问题的原因。
不幸的是,我不知道如何向解析器讲授我的标签。似乎这是非常普遍的做法,所以我希望有一种解决方法。
答案 0 :(得分:2)
从http://www.emacswiki.org/emacs/IndentingC#toc13开始,您可以设置“微软”风格。
将其放入.emacs
:
(c-add-style "microsoft"
'("stroustrup"
(c-offsets-alist
(innamespace . -)
(inline-open . 0)
(inher-cont . c-lineup-multi-inher)
(arglist-cont-nonempty . +)
(template-args-cont . +))))
(setq c-default-style "microsoft")
或保留默认值并通过M-x c-set-style
手动将其设置为microsoft
。
您的示例呈现此缩进:
class myDllSpec Foo {
public:
Foo( void );
};