;; C++ Mode
(c-set-offset 'access-label '-2)
(c-set-offset 'inclass '4)
(setq c-default-style "k&r"
c-basic-offset 2)
这是我的C ++配置。我希望Emacs用2个空格缩进结构,就像它是缩进函数一样,if / while / for blocks,但是目前它是这样做的:
struct plane {
//4 spaces'?
};
然而,它是这样做的:
typedef car {
//2 spaces!
}
我尝试使用c-mode
和c++-mode
。当我在结构体内进行M-x c-set-offset
时(当前它正在缩进4个空格),它会将其检测为topmost-intro
(0个空格),即使在C ++模式下也是如此。
基本上,我希望内部结构缩进2个空格而不是4个空格,就像现在一样。 (GNU Emacs 24.2.1)
答案 0 :(得分:4)
您应该删除配置并以
开头(custom-set-variables
'(c-basic-offset 2))
这会将所有缩进设置为2个空格。 然后你可以从那里改进。
例如,您可以设置c-offsets-alist
来自定义各种元素的缩进。或c-hanging-braces-alist
配置您的大括号的位置,在同一行或下一行。等等。
如果您已安装CC模式信息文件,则可以使用
进行浏览Ctrl-h i m CC模式 RET
CC模式不区分class
和struct
,因为句法元素都是inclass
。您可以基于仅具有Custom Line-Up Function
(defun my/c-lineup-inclass (langelem)
(let ((inclass (assoc 'inclass c-syntactic-context)))
(if (not inclass)
0
(save-excursion
(goto-char (c-langelem-pos inclass))
(if (looking-at "struct") 0 '+)))))
如果您位于class
或struct
或外部并且相应地返回缩进级别,则此函数会显示。然后,您可以在c-offsets-alist
(custom-set-variables
'(c-offsets-alist (quote ((access-label . 0)
(topmost-intro . my/c-lineup-inclass)))))