bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CC Mode 5.28 (C++); Open brace in column 1 confuses brace matching


From: S. David Pullara
Subject: Re: CC Mode 5.28 (C++); Open brace in column 1 confuses brace matching
Date: Wed, 28 Aug 2002 11:05:06 -0400 (EDT)

(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" <address@hidden> 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 <address@hidden> 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 address@hidden (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: address@hidden, address@hidden
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: address@hidden, address@hidden
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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]