0

Q_OBJECT 和信号之类的 Qt 宏正在搞乱 Emacs 对我的 C++ 代码的缩进。如何让 Emacs 识别 Qt 宏并相应地缩进我的 C++ 代码?

Emacs 版本:23.3.1
CC 模式版本:5.31.8

根据Emacs wiki,我的 CC 模式应该支持开箱即用的 Qt 宏,但我没有这样做。

这是一个屏幕截图。 在此处输入图像描述

有人问过类似的问题,但没有提供解决方案。

4

1 回答 1

1

我认为自从这个功能被添加到 Emacs 以来 Qt 宏已经更新,所以 Emacs 在这方面有点过时了。

修复它的方法是更新变量c-macro-names-with-semicolon。当前值为:

("Q_OBJECT" "Q_PROPERTY" "Q_DECLARE" "Q_ENUMS")

在我看来,至少应该添加 Q_INTERFACES (也许你知道更多的宏,我没有使用 Qt 的经验)。

修复它的正确方法是将其添加到您的配置中:

(defun qt-macros-update ()
  (setq c-macro-names-with-semicolon '("Q_OBJECT" "Q_PROPERTY"
                                       "Q_DECLARE" "Q_ENUMS" "Q_INTERFACES"))
  (c-make-macro-with-semi-re))

(add-hook 'c-mode-common-hook 'qt-macros-update)

然后M-x report-emacs-bug让 emacs 维护人员更新代码并修复该变量的文档(这似乎也已过时)

更新:

这适用于 Emacs 24。使用 Emacs 23 恐怕这行不通。

于 2013-11-15T07:40:53.283 回答