GNU bug report logs -
#23818
25.0.95.3: c-beginning-of-defun misbehaviour
Previous Next
Reported by: Rolf Ade <rolf <at> pointsman.de>
Date: Wed, 22 Jun 2016 00:20:02 UTC
Severity: normal
Found in version 25.0.95.3
Done: Alan Mackenzie <acm <at> muc.de>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
The same in 24.5 and 25.0.95.3:
emacs -Q
Open some random emtpy buffer foo.c, put it in c-mode (M-x c-mode) and
insert the following C code:
#define DBG(x) x
DBG(
static void __dbgAttr () {
/* something */
}
)
int main (void)
{
int i;
i++;
i++;
return i;
}
int foo ()
{
int i;
i++;
i++;
return 1;
}
Put the point inside function main and C-M-home (or M-x
c-beginning-of-defun). Instead of the beginning of main() the point is
here:
_P_DBG(
...
Far away from
_P_int main(void)
...
This isn't "unbalanced braces in preprocessor statements are
horrendously difficult to parse" as in bug #23775, there are no
unbalanced braces everywhere. It's that some code above the code of a
syntactical correct function disturbs c-beginning-of-defun in finding
the beginning of the function.
Put the point into or at the end of function foo, do C-M-home and you
are at the beginning of function foo. Do C-M-home again, and you are not
at the beginning of main, but of the beginning of DBG.
Remove the DBG(). Now C-M-home works, even if the point is inside or the
end of main().
This bug report was last modified 7 years and 279 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.