Subject: bug#25608: CC Mode 5.33 (C/l); Incorrect syntactic information and indentation after multi-line comment with parenthesis or keywords

From: Glenn Morris <[email-masked]>
Date: Thu, 02 Feb 2017 13:34:36 -0500

I've reassigned this report to the right package in debbugs.gnu.org,
and am sending this reply so it appears on the right mailing list.

(It is of course impossible to comply with the meaningless legal
disclaimer at the end of the mssage.)

Chris Wagner wrote:

> Hello,
>
> With the following c code:
>
> /*-----------------------------------------------------------------------------
> (c) Copyright notice containing open parentheses
> -----------------------------------------------------------------------------*/
>
>  
> /*---------------------------------------------------------------------------*/
>
>
> the last line is indented incorrectly, as the identified syntactic
> information is ((topmost-intro-cont 1) (comment-intro)). I think it
> should be ((topmost-intro 1) (comment-intro)), which the following code
> correctly identifies:
>
> /*-----------------------------------------------------------------------------
> Non parenthesis language
> -----------------------------------------------------------------------------*/
>
> /*---------------------------------------------------------------------------*/
>
>
> Similarly, if there is a keyword in the comment, the next comment is
> incorrectly identified and indented:
>
> /*-----------------------------------------------------------------------------
> (c) Copyright notice containing open parentheses
> Line containing keyword for
> -----------------------------------------------------------------------------*/
>
>  
> /*---------------------------------------------------------------------------*/
>
> Note that indenting the comment region removes the problem:
>
> /*-----------------------------------------------------------------------------
>   (c) Copyright notice containing open parentheses
>   Line containing keyword for
> -----------------------------------------------------------------------------*/
>
> /*---------------------------------------------------------------------------*/
>
> indents correctly.
>
> Best regards,
> Chris
>
>
> Emacs  : GNU Emacs 25.1.1 (x86_64-w64-mingw32)
>  of 2016-09-17
> Package: CC Mode 5.33 (C/l)
> Buffer Style: bsd
> c-emacs-features: (pps-extended-state col-0-paren posix-char-classes 
> gen-string-delim gen-comment-delim syntax-properties 1-bit)
>
> current state:
> ==============
> (setq
>  c-basic-offset 4
>  c-comment-only-line-offset 0
>  c-indent-comment-alist '((anchored-comment column . 0) (end-block space . 
> 1) (cpp-end-block space . 2))
>  c-indent-comments-syntactically-p nil
>  c-block-comment-prefix "* "
>  c-comment-prefix-regexp '((pike-mode . "//+!?\\|\\**") (awk-mode . "#+") 
> (other . "//+\\|\\**"))
>  c-doc-comment-style '((java-mode . javadoc) (pike-mode . autodoc) (c-mode 
> . gtkdoc))
>  c-cleanup-list '(scope-operator)
>  c-hanging-braces-alist '((brace-list-open) (brace-entry-open) 
> (statement-cont) (substatement-open after)
>                           (block-close . c-snug-do-while) 
> (extern-lang-open after) (namespace-open after)
>                           (module-open after) (composition-open after) 
> (inexpr-class-open after)
>                           (inexpr-class-close before) 
> (arglist-cont-nonempty))
>  c-hanging-colons-alist nil
>  c-hanging-semi&comma-criteria '(c-semi&comma-inside-parenlist)
>  c-backslash-column 48
>  c-backslash-max-column 72
>  c-special-indent-hook nil
>  c-label-minimum-indentation 1
>  c-offsets-alist '((inexpr-statement . +)
>                    (lambda-intro-cont . +)
>                    (inlambda . c-lineup-inexpr-block)
>                    (template-args-cont c-lineup-template-args +)
>                    (incomposition . +)
>                    (inmodule . +)
>                    (innamespace . +)
>                    (inextern-lang . +)
>                    (composition-close . 0)
>                    (module-close . 0)
>                    (namespace-close . 0)
>                    (extern-lang-close . 0)
>                    (composition-open . 0)
>                    (module-open . 0)
>                    (namespace-open . 0)
>                    (extern-lang-open . 0)
>                    (objc-method-call-cont c-lineup-ObjC-method-call-colons 
> c-lineup-ObjC-method-call +)
>                    (objc-method-args-cont . c-lineup-ObjC-method-args)
>                    (objc-method-intro . [0])
>                    (friend . 0)
>                    (cpp-define-intro c-lineup-cpp-define +)
>                    (cpp-macro-cont . +)
>                    (cpp-macro . [0])
>                    (inclass . +)
>                    (stream-op . c-lineup-streamop)
>                    (arglist-close . +)
>                    (arglist-cont-nonempty c-lineup-gcc-asm-reg 
> c-lineup-arglist)
>                    (arglist-cont c-lineup-gcc-asm-reg 0)
>                    (arglist-intro . +)
>                    (comment-intro c-lineup-knr-region-comment 
> c-lineup-comment)
>                    (catch-clause . 0)
>                    (else-clause . 0)
>                    (do-while-closure . 0)
>                    (access-label . -)
>                    (case-label . 0)
>                    (substatement . +)
>                    (statement-case-open . 0)
>                    (statement-case-intro . +)
>                    (statement . 0)
>                    (brace-entry-open . 0)
>                    (brace-list-entry . 0)
>                    (brace-list-intro . +)
>                    (brace-list-close . 0)
>                    (brace-list-open . 0)
>                    (block-close . 0)
>                    (block-open . 0)
>                    (inher-cont . c-lineup-multi-inher)
>                    (inher-intro . +)
>                    (member-init-cont . c-lineup-multi-inher)
>                    (member-init-intro . +)
>                    (annotation-var-cont . +)
>                    (annotation-top-cont . 0)
>                    (topmost-intro-cont . c-lineup-topmost-intro-cont)
>                    (topmost-intro . 0)
>                    (knr-argdecl . 0)
>                    (func-decl-cont . +)
>                    (inline-close . 0)
>                    (class-close . 0)
>                    (class-open . 0)
>                    (defun-block-intro . +)
>                    (defun-close . 0)
>                    (defun-open . 0)
>                    (c . c-lineup-C-comments)
>                    (string . c-lineup-dont-change)
>                    (inexpr-class . 0)
>                    (inline-open . 0)
>                    (statement-cont . +)
>                    (label . 0)
>                    (substatement-label . 0)
>                    (substatement-open . 0)
>                    (knr-argdecl-intro . +)
>                    (statement-block-intro . +)
>                    )
>  c-buffer-is-cc-mode 'c-mode
>  c-tab-always-indent t
>  c-syntactic-indentation t
>  c-syntactic-indentation-in-macros t
>  c-ignore-auto-fill '(string cpp code)
>  c-auto-align-backslashes t
>  c-backspace-function 'backward-delete-char-untabify
>  c-delete-function 'delete-char
>  c-electric-pound-behavior nil
>  c-default-style "bsd"
>  c-enable-xemacs-performance-kludge-p nil
>  c-old-style-variable-behavior nil
>  defun-prompt-regexp nil
>  tab-width 4
>  comment-column 32
>  parse-sexp-ignore-comments t
>  parse-sexp-lookup-properties t
>  auto-fill-function nil
>  comment-multi-line t
>  comment-start-skip "\\(//+\\|/\\*+\\)\\s *"
>  fill-prefix nil
>  fill-column 70
>  paragraph-start "[     ]*\\(//+\\|\\**\\)[     ]*$\\|^\f"
>  adaptive-fill-mode t
>  adaptive-fill-regexp "[        ]*\\(//+\\|\\**\\)[     ]*\\([ 
> ]*\\([-?!|#%;>*·????]+[      ]*\\)*\\)"
>  )
>
>
>
> Dr Chris Wagner
> Senior Consultant, Medical Technology 
> Cambridge Consultants
> Science Park, Milton Road 
> Cambridge, CB4 0DW, England
> Switchboard: +44 (0)1223 420024
> Direct dial: +44 (0)1223 392497
> Fax: +44 (0)1223 423373
> [email-masked]
> www.CambridgeConsultants.com
>  
>
>
>
>
>
> This email is from Cambridge Consultants Limited, Science Park, Milton 
> Road, Cambridge CB4 0DW with registered number 1036298 England. It may 
> contain confidential information. It is intended for the addressee only 
> and may not be copied or disclosed to any third party without our 
> permission. If you are not the intended recipient please contact the 
> sender as soon as possible and delete the material from any computer. If 
> this email has been sent as a personal message to the addressee, the 
> sender is not acting in his/her capacity as an employee or officer of 
> Cambridge Consultants Limited and no liability is accepted for the content 
> of any such email. Outgoing email may be monitored for the purpose of 
> ensuring compliance with our email policy and relevant laws.