Q_OBJECT 和信号之类的 Qt 宏正在搞乱 Emacs 对我的 C++ 代码的缩进。如何让 Emacs 识别 Qt 宏并相应地缩进我的 C++ 代码?
Emacs 版本:23.3.1
CC 模式版本:5.31.8
根据Emacs wiki,我的 CC 模式应该支持开箱即用的 Qt 宏,但我没有这样做。
这是一个屏幕截图。
有人问过类似的问题,但没有提供解决方案。
Q_OBJECT 和信号之类的 Qt 宏正在搞乱 Emacs 对我的 C++ 代码的缩进。如何让 Emacs 识别 Qt 宏并相应地缩进我的 C++ 代码?
Emacs 版本:23.3.1
CC 模式版本:5.31.8
根据Emacs wiki,我的 CC 模式应该支持开箱即用的 Qt 宏,但我没有这样做。
这是一个屏幕截图。
有人问过类似的问题,但没有提供解决方案。
我认为自从这个功能被添加到 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 恐怕这行不通。