GNU bug report logs -
#11448
24.1.50; Strange indentation level in C macro
Previous Next
Reported by: mwd <at> md5i.com
Date: Thu, 10 May 2012 21:48:01 UTC
Severity: normal
Found in version 24.1.50
Done: Alan Mackenzie <acm <at> muc.de>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 11448 <at> debbugs.gnu.org (full text, mbox):
Hi, Michael!
On Thu, May 30, 2013 at 10:46:20PM -0400, Michael Welsh Duggan wrote:
> I'd like to bump this issue.
Sorry, I missed this one last year.
> I looked into it a little, and it looks like several of the macros
> before the point in question are being marked as c-in-sws, which
> doesn't seem right to me. The code ends up evaluating
> `c-beginning-of-macro' in a buffer that is narrowed such that the
> beginning of the macro that it is trying to find the beginning of is
> cut off.
Yes, sort of. I think the c-in-sws properties are right.
What I think is throwing it off is the calculation of a search limit
(effectively a buffer narrowing) in `c-guess-basic-syntax'. That limit
was erroneously at a random position, but it actually needs to be at a
"syntactically neutral" position.
I put that limit calculation in as part of a large optimisation for a
~3,500 line macro which was causing scrolling to go very slowly. Taking
it out again doesn't seem to slow it down all that badly. So, out it
comes!
> The resulting indentation problem isn't horrible, but the bug that leads
> to this problem is subtle enough that it could be causing other problems
> in similar situations.
Yes. Thanks for the bug report. Could you try out this patch please.
I think it fixes the bug:
diff -r ce17d1595c2f cc-engine.el
--- a/cc-engine.el Tue May 28 15:00:49 2013 +0000
+++ b/cc-engine.el Sat Jun 01 13:52:38 2013 +0000
@@ -9396,10 +9396,6 @@
containing-sexp nil)))
(setq lim (1+ containing-sexp))))
(setq lim (point-min)))
- (when (c-beginning-of-macro)
- (goto-char indent-point)
- (let ((lim1 (c-determine-limit 2000)))
- (setq lim (max lim lim1))))
;; If we're in a parenthesis list then ',' delimits the
;; "statements" rather than being an operator (with the
> --
> Michael Duggan
--
Alan Mackenzie (Nuremberg, Germany).
This bug report was last modified 11 years and 354 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.