CC Mode maintainers: I dropped bug-gnu-emacs because I don't know if
this manifests on GNU Emacs or not.
>>>> "S" == S David Pullara
<sdpullara(a)yahoo.ca> writes:
namespace {
const char* hello()
{ return "hello"; }
} //namespace
MyClass::MyClass()
{}
void foo()
{
}
S> Go to the definition of foo() and try to hit tab, or try to
S> reindent. The mode thinks there is a brace mismatch, but if
S> you look you'll see that there is no mismatch;
S> blink-matching-open also sees each matching brace if you do it
S> at each closing brace.
Please report upstream to the cc-mode maintainers (use C-c C-b in
cc-mode; we would like you to do it so they'll know exactly your
configuration of XEmacs and cc-mode). XEmacs's "character syntax"
functions are known to be buggy, but this doesn't seem to be due to
any of the bugs (they have to do with comment parsing, and removing
the comment did not help) I know about in XEmacs.
On the other hand, reindenting namespace according to the "stock" (I
have no cc-mode customizations) configuration eliminated the error.
It seems to me that cc-mode (or perhaps XEmacs) doesn't like your
preferred style for some reason.
In particular, if _either_ of the open braces in column 1 (under
namespace and MyClass::MyClass) are indented by one space, I get no
error signalled when indenting the line containing "void foo". If I
add
void bar()
{
}
following void foo() to your example (exactly as you wrote it), then I
still get the error using TAB on void foo, but no error when using TAB
on void bar.
Do you have the same problem with GNU Emacs (if you use it)?
------------------------------------------------------------------------
cc-mode bug report info for stephen(a)xemacs.org (NOT the OP)
Emacs: XEmacs 21.4 (patch 9) "Informed Management (RC2)" [Lucid] (i686-pc-linux,
Mule) of Thu Jul 4 2002 on tleepslib
Package: CC Mode 5.28 (C++)
Buffer Style: gnu
c-emacs-features: (8-bit)
current state:
==============
(setq
c-basic-offset 2
c-comment-only-line-offset '(0 . 0)
c-block-comment-prefix ""
c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (other .
"//+\\|\\**"))
c-cleanup-list '(scope-operator)
c-hanging-braces-alist '((brace-list-open) (brace-entry-open)
(substatement-open after)
(block-close . c-snug-do-while)
(extern-lang-open after) (inexpr-class-open after)
(inexpr-class-close before))
c-hanging-colons-alist nil
c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist)
c-backslash-column 48
c-label-minimum-indentation 1
c-offsets-alist '((string . c-lineup-dont-change)
(c . c-lineup-C-comments)
(defun-open . 0)
(defun-close . 0)
(defun-block-intro . +)
(class-open . 0)
(class-close . 0)
(inline-close . 0)
(func-decl-cont . +)
(knr-argdecl . 0)
(topmost-intro . 0)
(topmost-intro-cont . 0)
(member-init-intro . +)
(member-init-cont . c-lineup-multi-inher)
(inher-intro . +)
(inher-cont . c-lineup-multi-inher)
(block-open . 0)
(block-close . 0)
(brace-list-close . 0)
(brace-list-intro . +)
(brace-list-entry . 0)
(brace-entry-open . 0)
(statement . 0)
(statement-case-intro . +)
(substatement . +)
(case-label . 0)
(access-label . -)
(do-while-closure . 0)
(else-clause . 0)
(catch-clause . 0)
(comment-intro . c-lineup-comment)
(arglist-cont . 0)
(arglist-cont-nonempty . c-lineup-arglist)
(stream-op . c-lineup-streamop)
(inclass . +)
(cpp-macro . [0])
(cpp-macro-cont . c-lineup-dont-change)
(friend . 0)
(objc-method-intro . [0])
(objc-method-args-cont . c-lineup-ObjC-method-args)
(objc-method-call-cont . c-lineup-ObjC-method-call)
(extern-lang-open . 0)
(extern-lang-close . 0)
(inextern-lang . +)
(namespace-open . 0)
(namespace-close . 0)
(innamespace . +)
(template-args-cont c-lineup-template-args +)
(inlambda . c-lineup-inexpr-block)
(lambda-intro-cont . +)
(inexpr-statement . 0)
(inexpr-class . +)
(statement-block-intro . +)
(knr-argdecl-intro . 5)
(substatement-open . +)
(label . 0)
(statement-case-open . +)
(statement-cont . +)
(arglist-intro . c-lineup-arglist-intro-after-paren)
(arglist-close . c-lineup-arglist)
(inline-open . 0)
(brace-list-open . +)
)
c-delete-function 'delete-char
c-electric-pound-behavior nil
c-indent-comments-syntactically-p nil
c-tab-always-indent t
defun-prompt-regexp nil
tab-width 8
comment-column 32
parse-sexp-ignore-comments t
signal-error-on-buffer-boundary t
auto-fill-function nil
comment-multi-line t
comment-start-skip "/\\*+ *\\|//+ *"
fill-prefix nil
paragraph-start "[ ]*\\(//+\\|\\**\\)[ ]*$\\|^"
adaptive-fill-mode t
adaptive-fill-regexp "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([#;>*]+
+\\)?\\)"
)
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
My nostalgia for Icon makes me forget about any of the bad things. I don't
have much nostalgia for Perl, so its faults I remember. Scott Gilbert c.l.py