GNU bug report logs -
#36802
CC Mode 5.34 (C/*l); Spurious indentation in line after open #include
Previous Next
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 36802 in the body.
You can then email your comments to 36802 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-cc-mode <at> gnu.org
:
bug#36802
; Package
cc-mode
.
(Wed, 24 Jul 2019 20:05:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Richard Copley <rcopley <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-cc-mode <at> gnu.org
.
(Wed, 24 Jul 2019 20:05:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
Package: cc-mode
(From "emacs -Q".) In an empty C++ buffer, type [#include SPC <ab> C-p
BACKSPACE C-e RET], or (for a more realistic example), correct
"#include <asio/asio.hpp>" to "#include <asio.hpp>" like this:
...asio.hpp ;; self-insert-command
> ;; c-electric-lt-gt
M-b ;; backward-word
M-b ;; backward-word
<C-backspace> ;; backward-kill-word
M-> ;; end-of-buffer
<return> ;; newline
The new line is indented one level (expected zero levels). This
corrects itself after doing M-x normal mode.
Reproduced below is the story so far, which comes after a discussion
of unrelated matters at bug#36397.
On Tue, 23 Jul 2019 at 14:10, Alan Mackenzie <acm <at> muc.de> wrote:
On Mon, Jul 22, 2019 at 20:47:22 +0100, Richard Copley wrote:
[ .... ]
This was an error in the macro cache handling. After the deletion
of the >, the cache failed to adjust its upper bound downwards by
one. Thus the cache was still representing that the beginning of
the new line was inside the macro bounds.
The following patch should fix this. Would you please do the
usual with it.
Just as a matter of interest, how on earth did you manage to
stumble across the key sequence (above) which triggers this bug?
(The patch, by Alan, is elided by Richard in this email opening the bug
report.)
Emacs : GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)
of 2019-07-23
Package: CC Mode 5.34 (C/*l)
Buffer Style: gnu
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 2
c-comment-only-line-offset '(0 . 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++-mode . gtkdoc))
c-cleanup-list '(scope-operator)
c-hanging-braces-alist '((substatement-open before after)
(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 '(c-gnu-impose-minimum)
c-label-minimum-indentation 1
c-offsets-alist '((inexpr-class . +)
(inexpr-statement . +)
(lambda-intro-cont . +)
(inlambda . 0)
(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-cont-nonempty
c-lineup-gcc-asm-reg
c-lineup-arglist
)
(arglist-cont c-lineup-gcc-asm-reg 0)
(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-intro . +)
(statement . 0)
(brace-entry-open . 0)
(brace-list-entry . 0)
(brace-list-close . 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 . 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)
(topmost-intro-cont
first
c-lineup-topmost-intro-cont
c-lineup-gnu-DEFUN-intro-cont
)
(brace-list-intro
first
c-lineup-2nd-brace-entry-in-arglist
c-lineup-class-decl-init-+
+
)
(brace-list-open . +)
(inline-open . 0)
(arglist-close . c-lineup-arglist)
(arglist-intro . c-lineup-arglist-intro-after-paren)
(statement-cont . +)
(statement-case-open . +)
(label . 0)
(substatement-label . 0)
(substatement-open . +)
(knr-argdecl-intro . 5)
(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 '((java-mode . "java") (awk-mode . "awk") (other . "gnu"))
c-enable-xemacs-performance-kludge-p nil
c-old-style-variable-behavior nil
defun-prompt-regexp nil
tab-width 8
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 "[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*\\([-–!|#%;>*·•‣⁃◦]+[
]*\\)*\\)"
)
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#36802
; Package
cc-mode
.
(Thu, 25 Jul 2019 09:24:01 GMT)
Full text and
rfc822 format available.
Message #8 received at 36802 <at> debbugs.gnu.org (full text, mbox):
Hello agin, Richard.
On Wed, Jul 24, 2019 at 21:04:03 +0100, Richard Copley wrote:
> Package: cc-mode
> (From "emacs -Q".) In an empty C++ buffer, type [#include SPC <ab> C-p
> BACKSPACE C-e RET], or (for a more realistic example), correct
> "#include <asio/asio.hpp>" to "#include <asio.hpp>" like this:
> ...asio.hpp ;; self-insert-command
> > ;; c-electric-lt-gt
> M-b ;; backward-word
> M-b ;; backward-word
> <C-backspace> ;; backward-kill-word
> M-> ;; end-of-buffer
> <return> ;; newline
> The new line is indented one level (expected zero levels). This
> corrects itself after doing M-x normal mode.
Thanks for the bug report.
> Reproduced below is the story so far, which comes after a discussion
> of unrelated matters at bug#36397.
> On Tue, 23 Jul 2019 at 14:10, Alan Mackenzie <acm <at> muc.de> wrote:
> On Mon, Jul 22, 2019 at 20:47:22 +0100, Richard Copley wrote:
> [ .... ]
> This was an error in the macro cache handling. After the deletion
> of the >, the cache failed to adjust its upper bound downwards by
> one. Thus the cache was still representing that the beginning of
> the new line was inside the macro bounds.
> The following patch should fix this. Would you please do the
> usual with it.
> Just as a matter of interest, how on earth did you manage to
> stumble across the key sequence (above) which triggers this bug?
> (The patch, by Alan, is elided by Richard in this email opening the bug
> report.)
Here is the patch, again. I'm very confident that this fixes the bug
properly. Unless I hear otherwise within a day or two, I'll be
committing this patch and closing the bug.
diff -r 2e20f0567ddf cc-engine.el
--- a/cc-engine.el Tue Jul 23 09:45:20 2019 +0000
+++ b/cc-engine.el Tue Jul 23 13:00:17 2019 +0000
@@ -278,6 +278,11 @@
(setcdr c-macro-cache nil)
(setq c-macro-cache-start-pos beg
c-macro-cache-syntactic nil
+ c-macro-cache-no-comment nil))
+ ((and c-macro-cache-start-pos
+ (< beg (c-macro-cache-start-pos)))
+ (setq c-macro-cache-start-pos beg
+ c-macro-cache-syntactic nil
c-macro-cache-no-comment nil))))
(defun c-macro-is-genuine-p ()
> Emacs : GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)
> of 2019-07-23
> Package: CC Mode 5.34 (C/*l)
> Buffer Style: gnu
> c-emacs-features: (pps-extended-state col-0-paren posix-char-classes
> gen-string-delim gen-comment-delim syntax-properties 1-bit)
[ .... ]
--
Alan Mackenzie (Nuremberg, Germany).
Information forwarded
to
bug-cc-mode <at> gnu.org
:
bug#36802
; Package
cc-mode
.
(Fri, 26 Jul 2019 18:42:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 36802 <at> debbugs.gnu.org (full text, mbox):
Hello, Richard.
On Fri, Jul 26, 2019 at 13:13:33 +0100, Richard Copley wrote:
> Hi Alan,
> [BTW, I didn't really mean to move this discussion to a private email. That
> was just clumsiness on my part. I have no objection to any of it being
> published. We can join the bug thread if you want.]
I've just put it back into the bug thread.
> On Thu, 25 Jul 2019 at 17:56, Alan Mackenzie <acm <at> muc.de> wrote:
> > Hello, Richard.
> > On Thu, Jul 25, 2019 at 16:35:01 +0100, Richard Copley wrote:
> > > On Thu, 25 Jul 2019 at 10:23, Alan Mackenzie <acm <at> muc.de> wrote:
> > [ .... ]
> > > > Here is the patch, again. I'm very confident that this fixes the bug
> > > > properly. Unless I hear otherwise within a day or two, I'll be
> > > > committing this patch and closing the bug.
> > > > diff -r 2e20f0567ddf cc-engine.el
> > > > --- a/cc-engine.el Tue Jul 23 09:45:20 2019 +0000
> > > > +++ b/cc-engine.el Tue Jul 23 13:00:17 2019 +0000
> > > > @@ -278,6 +278,11 @@
> > > > (setcdr c-macro-cache nil)
> > > > (setq c-macro-cache-start-pos beg
> > > > c-macro-cache-syntactic nil
> > > > + c-macro-cache-no-comment nil))
> > > > + ((and c-macro-cache-start-pos
> > > > + (< beg (c-macro-cache-start-pos))) <=====================
> > > > + (setq c-macro-cache-start-pos beg
> > > > + c-macro-cache-syntactic nil
> > > > c-macro-cache-no-comment nil))))
> > > > (defun c-macro-is-genuine-p ()
> > > > > Emacs : GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32)
> > > > > of 2019-07-23
> > > > > Package: CC Mode 5.34 (C/*l)
> > > > > Buffer Style: gnu
> > > > > c-emacs-features: (pps-extended-state col-0-paren posix-char-classes
> > > > > gen-string-delim gen-comment-delim syntax-properties 1-bit)
> > > > [ .... ]
> > > Hi Alan,
> > > The byte-compiler complains that c-macro-cache-start-pos is not
> > > defined as a function.
> > That's wierd. I tested it. I _must_ have tested it. But it's wrong,
> > and non-workable. On the marked line, the parentheses around
> > c-macro-cache-start-pos should not be there. Maybe I should take a day's
> > rest. Sorry about the nuisance.
> Thank you, the apology is not at all necessary, but I very much appreciate
> it anyway.
> It /is/ weird. I didn't notice it at all at first (I saw the compiler
> warning during a rebuild, later) but it looks like it should signal an
> error.
More precisely, it should signal an error at run-time.
> Are errors suppressed there, do you think? If not, I suppose I wasn't
> testing that code path, though I did intend to.
However if a run-time error happens during fontification, the
fontification routine is removed from the hook fontification-functions,
or sometimes from after-change-functions, leaving fontification not
working rather than Emacs remaining hopelessly hung. Maybe this
happened.
> > Please try this instead:
> > diff -r 2e20f0567ddf cc-engine.el
> > --- a/cc-engine.el Tue Jul 23 09:45:20 2019 +0000
> > +++ b/cc-engine.el Thu Jul 25 16:51:48 2019 +0000
> > @@ -278,6 +278,11 @@
> > (setcdr c-macro-cache nil)
> > (setq c-macro-cache-start-pos beg
> > c-macro-cache-syntactic nil
> > + c-macro-cache-no-comment nil))
> > + ((and c-macro-cache-start-pos
> > + (< beg c-macro-cache-start-pos))
> > + (setq c-macro-cache-start-pos beg
> > + c-macro-cache-syntactic nil
> > c-macro-cache-no-comment nil))))
> > (defun c-macro-is-genuine-p ()
> Thanks, I am trying that. It seems no different (?weirdly). I currently
> have three patches (of yours) against master: the above for #36802, the
> other short patch for #36801, and the longer patch for #36397.
Yes:
#36397: A M-q in a comment causes 'args-out-of-range'.
#36801: In origin[x];, x is being wrongly fontified.
#36802: Spurious indentation in line after open #include.
That's rather a lot. ;-( Let's see if we can get one or more of these
closed over the weekend.
Have a good weekend!
--
Alan Mackenzie (Nuremberg, Germany).
Reply sent
to
Alan Mackenzie <acm <at> muc.de>
:
You have taken responsibility.
(Fri, 02 Aug 2019 13:45:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Richard Copley <rcopley <at> gmail.com>
:
bug acknowledged by developer.
(Fri, 02 Aug 2019 13:45:02 GMT)
Full text and
rfc822 format available.
Message #16 received at 36802-done <at> debbugs.gnu.org (full text, mbox):
Hello, Richard.
On Wed, Jul 24, 2019 at 21:04:03 +0100, Richard Copley wrote:
> Package: cc-mode
> (From "emacs -Q".) In an empty C++ buffer, type [#include SPC <ab> C-p
> BACKSPACE C-e RET], or (for a more realistic example), correct
> "#include <asio/asio.hpp>" to "#include <asio.hpp>" like this:
> ...asio.hpp ;; self-insert-command
> > ;; c-electric-lt-gt
> M-b ;; backward-word
> M-b ;; backward-word
> <C-backspace> ;; backward-kill-word
> M-> ;; end-of-buffer
> <return> ;; newline
> The new line is indented one level (expected zero levels). This
> corrects itself after doing M-x normal mode.
I've committed the patch we were discussing, and I'm closing this bug.
--
Alan Mackenzie (Nuremberg, Germany).
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sat, 31 Aug 2019 11:24:04 GMT)
Full text and
rfc822 format available.
This bug report was last modified 5 years and 296 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.