gpt4 book ai didi

c++ - 如何将 Emacs 结构缩进从 4 个空格更改为 2 个空格

转载 作者:行者123 更新时间:2023-11-30 02:00:38 27 4
gpt4 key购买 nike

;; 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 block ,但目前它是这样做的:

struct plane {
//4 spaces'?
};

但是,它是这样做的:

typedef car {
//2 spaces!
}

我尝试使用 c-modec++-mode。当我在一个结构中执行 M-x c-set-offset 时(它当前缩进了 4 个空格),它检测到它是 topmost-intro (0 个空格),甚至在 C++ 模式下。

基本上,我希望内部结构缩进 2 个空格而不是现在的 4 个空格。 (GNU Emacs 24.2.1)

最佳答案

你应该删除你的配置并开始

(custom-set-variables
'(c-basic-offset 2))

这会将所有缩进设置为 2 个空格。然后你可以从那里改进。

例如,您可以设置c-offsets-alist 来自定义各种元素的缩进。或 c-hanging-braces-alist 进行配置,在同一行或下一行设置大括号。等等。

如果您已经安装了 CC 模式信息文件,您可以使用

浏览它

Ctrl-h i mCC 模式RET

CC模式不区分classstruct,因为两者的句法元素都是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 '+)))))

如果您在 classstruct 内部或外部,此函数看起来会相应地返回缩进级别。然后,您可以在 c-offsets-alist

中使用它
(custom-set-variables
'(c-offsets-alist (quote ((access-label . 0)
(topmost-intro . my/c-lineup-inclass)))))

关于c++ - 如何将 Emacs 结构缩进从 4 个空格更改为 2 个空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14939608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com