Reported by: Christoph Scholtes <cschol2112 <at> googlemail.com>
Date: Sun, 18 Sep 2011 15:18:01 UTC
Severity: normal
Tags: unreproducible
Found in version 24.0.50
Done: Andrew Hyatt <ahyatt <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Jan Djärv <jan.h.d <at> swipnet.se> To: Christoph Scholtes <cschol2112 <at> googlemail.com> Cc: 9544 <at> debbugs.gnu.org Subject: bug#9544: 24.0.50; cc-mode does not indent Qt class correctly Date: Sun, 18 Sep 2011 18:26:53 +0200
Hi. Can't you put a ; after Q_OBJECT, i.e: class Counter : public QObject { Q_OBJECT; public: ? public will then be correctly indented. Non-syntactical macros like this are a pain. I don't think it is possible to handle them except by emulating the preprocessor, which cc-mode does not (I think). Jan D. Christoph Scholtes skrev 2011-09-18 17:12: > With the latest emacs trunk, from `emacs -Q' open *.hpp file with this > content: > > class Counter : public QObject > { > Q_OBJECT > > public: > Counter() { m_value = 0; } > > int value() const { return m_value; } > > public slots: > void setValue(int value); > > signals: > void valueChanged(int newValue); > > private: > int m_value; > }; > > > Note, that the first access modifier `public' is not indented > properly. All Qt other extension modifiers are indented correctly. > > The indentation should look like this: > > class Counter : public QObject > { > Q_OBJECT > > public: > Counter() { m_value = 0; } > > [snip] > > The indentation works correctly when the `Q_OBJECT' macro is > removed. Since cc-mode does support the Qt extensions, it should > also correctly indent this class with the `Q_OBJECT' macro present. > > > > In GNU Emacs 24.0.50.1 (i386-mingw-nt6.1.7601) > of 2011-09-17 on MARVIN > Windowing system distributor `Microsoft Corp.', version 6.1.7601 > configured using `configure --with-gcc (4.5) --no-opt --cflags -I"C:/Program Files (x86)/GnuWin32/include" -ID:/devel/emacs/libXpm-3.5.8/include -ID:/devel/emacs/libXpm-3.5.8/src -ID:/devel/emacs/gnutls-2.10.5-x86/include --ldflags -LD:/devel/emacs/gnutls-2.10.5-x86/lib' > > Important settings: > value of $LC_ALL: nil > value of $LC_COLLATE: nil > value of $LC_CTYPE: nil > value of $LC_MESSAGES: nil > value of $LC_MONETARY: nil > value of $LC_NUMERIC: nil > value of $LC_TIME: nil > value of $LANG: ENU > value of $XMODIFIERS: nil > locale-coding-system: cp1252 > default enable-multibyte-characters: t > > Major mode: Emacs-Lisp > > Minor modes in effect: > paredit-mode: t > my-keys-minor-mode: t > erc-autojoin-mode: t > erc-track-mode: t > erc-match-mode: t > erc-pcomplete-mode: t > erc-stamp-mode: t > recentf-mode: t > desktop-save-mode: t > autopair-mode: t > autopair-global-mode: t > ido-everywhere: t > yas/global-mode: t > yas/minor-mode: t > global-auto-revert-mode: t > delete-selection-mode: t > tooltip-mode: t > mouse-wheel-mode: t > file-name-shadow-mode: t > global-font-lock-mode: t > font-lock-mode: t > blink-cursor-mode: t > auto-composition-mode: t > auto-encryption-mode: t > auto-compression-mode: t > size-indication-mode: t > column-number-mode: t > line-number-mode: t > > Recent input: > M-x c c - m o d e<tab> <tab> <tab> <backspace> <backspace> > <backspace> <backspace> <tab> <backspace> <backspace> > <backspace> <backspace> <backspace> <backspace> <backspace> > r e o<backspace> p o r t - b u<tab> <tab> <tab> <tab> > <tab> <backspace> <backspace> <backspace> C-g C-t C-/ > M-x r e p o r t<tab> <return> > > Recent messages: > Quit > Undo! > Loading system routine info in idle time... > Failed to convert XML routine info, falling back on idlw-rinfo. > Could not locate any system routine information. > Loading system routine info in idle time...done > Normalizing idlwave-system-routines in idle time...done > Loading and normalizing library catalogs in idle time...done > Finishing initialization in idle time... > Scanning all buffers... > > Load-path shadows: > None found. > > Features: > (shadow sort gnus-cite mail-extr gnus-msg gnus-art mm-uu mml2015 > epg-config mm-view mml-smime smime password-cache dig mailcap emacsbug > idlwave imenu idlwave-help idlw-help browse-url cc-mode cc-fonts > cc-guess cc-menus cc-cmds vc-hg paredit my-zenburn-theme erc-join > erc-track erc-match erc-pcomplete erc-stamp erc-goodies erc erc-backend > erc-compat thingatpt ispell bookmark+ bookmark+-key dired-x dired > bookmark+-1 nnir gnus-sum nnoo gnus-group gnus-undo nnmail mail-source > gnus-start gnus-spec gnus-int gnus-range message format-spec rfc822 mml > mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 > ietf-drums mailabbrev gmm-utils mailheader gnus-win gnus gnus-ems > nnheader gnus-util mail-utils mm-util mail-prsvr bookmark+-bmu help-mode > view bookmark+-lit pp+ bookmark+-mac bookmark pp recentf tree-widget > wid-edit midnight desktop ibuffer uniquify autopair google-c-style > cc-styles cc-align cc-engine cc-vars cc-defs browse-kill-ring+ > browse-kill-ring second-sel ido yasnippet dropdown-list derived edmacro > kmacro assoc cl org-habit org-agenda org byte-opt warnings bytecomp > byte-compile cconv macroexp ob-emacs-lisp ob-tangle ob-ref ob-lob > ob-table org-footnote org-src ob-comint comint ring ob-keys ob ob-eval > org-pcomplete pcomplete org-list org-faces org-compat org-entities > org-macs noutline outline easy-mmode regexp-opt cal-menu easymenu > calendar cal-loaddefs org-install server advice help-fns advice-preload > debbugs-autoloads package tabulated-list autorevert delsel time-date > tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32 disp-table > ls-lisp w32-win w32-vars tool-bar dnd fontset image fringe lisp-mode > register page menu-bar rfn-eshadow timer select scroll-bar mouse > jit-lock font-lock syntax facemenu font-core frame cham georgian > utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean > japanese hebrew greek romanian slovak czech european ethiopic indian > cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev > minibuffer button faces cus-face files text-properties overlay sha1 md5 > base64 format env code-pages mule custom widget hashtable-print-readable > backquote make-network-process multi-tty emacs) > >
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.