(My apologies if I've cc'd too many people in this reply.)
The problem does in fact occur in GNU Emacs as well. However, it
seems to be within the cc-mode package after 5.25. With no .emacs
file and cc-mode 5.25, I couldn't reproduce the problem. When I
installed a local copy of cc-mode 5.28 then the problem reappears as
described below.
I've appended the bug report buffers for both the 5.25 and 5.28
situations under GNU Emacs.
david
ps. Thanks to all of you for your hard work; I've been using Emacs a
long time and find it indispensable.
--- "Stephen J. Turnbull" <stephen(a)xemacs.org> wrote:
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 "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([#;>*]+
+\\)?\\)"
)
======================================================================
To: bug-gnu-emacs(a)gnu.org, bug-cc-mode(a)gnu.org
Subject: CC Mode 5.25 (C++); problem does not seem to occur
X-Reporter-Void-Vars-Found: signal-error-on-buffer-boundary
--text follows this line--
Dear Barry and Martin,
Emacs: GNU Emacs 20.7.1 (i386-redhat-linux-gnu, X toolkit)
of Thu Aug 24 2000 on
porky.devel.redhat.com
Package: CC Mode 5.25 (C++)
Buffer Style: gnu
c-emacs-features: (1-bit)
current state:
==============
(setq
c-basic-offset 2
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-open . 0)
(inline-close . 0)
(func-decl-cont . +)
(knr-argdecl-intro . 5)
(knr-argdecl . 0)
(topmost-intro . 0)
(topmost-intro-cont . 0)
(member-init-intro . +)
(member-init-cont . 0)
(inher-intro . +)
(inher-cont . c-lineup-multi-inher)
(block-open . 0)
(block-close . 0)
(brace-list-open . 0)
(brace-list-close . 0)
(brace-list-intro . +)
(brace-list-entry . 0)
(brace-entry-open . 0)
(statement . 0)
(statement-cont . +)
(statement-block-intro . +)
(statement-case-intro . +)
(statement-case-open . +)
(substatement . +)
(substatement-open . +)
(case-label . 0)
(access-label . -)
(label . 0)
(do-while-closure . 0)
(else-clause . 0)
(catch-clause . 0)
(comment-intro . c-lineup-comment)
(arglist-intro . c-lineup-arglist-intro-after-paren)
(arglist-cont . 0)
(arglist-cont-nonempty . c-lineup-arglist)
(arglist-close . c-lineup-arglist)
(stream-op . c-lineup-streamop)
(inclass . +)
(cpp-macro . -1000)
(cpp-macro-cont . c-lineup-dont-change)
(friend . 0)
(objc-method-intro . -1000)
(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 . +)
(inlambda . c-lineup-inexpr-block)
(lambda-intro-cont . +)
(inexpr-statement . 0)
(inexpr-class . +)
)
c-cleanup-list '(scope-operator)
c-comment-only-line-offset '(0 . 0)
c-backslash-column 48
c-delete-function 'delete-char
c-electric-pound-behavior nil
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-comment-starter-p t
c-hanging-comment-ender-p t
c-indent-comments-syntactically-p nil
c-tab-always-indent t
c-comment-continuation-stars ""
c-label-minimum-indentation 1
defun-prompt-regexp nil
tab-width 8
comment-column 32
)
======================================================================
To: bug-gnu-emacs(a)gnu.org, bug-cc-mode(a)gnu.org
Subject: CC Mode 5.28 (C++); problem occurs
--text follows this line--
Emacs: GNU Emacs 20.7.1 (i386-redhat-linux-gnu, X toolkit)
of Thu Aug 24 2000 on
porky.devel.redhat.com
Package: CC Mode 5.28 (C++)
Buffer Style: gnu
c-emacs-features: (1-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
auto-fill-function nil
comment-multi-line t
comment-start-skip "/\\*+ *\\|//+ *"
fill-prefix nil
paragraph-start "[ ]*\\(//+\\|\\**\\)[ ]*$\\|^\f"
adaptive-fill-mode t
adaptive-fill-regexp "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([-|#;>*]+
*\\|(?[0-9]+[.)] *\\)*\\)"
)
______________________________________________________________________
Post your ad for free now!
http://personals.yahoo.ca