GNU bug report logs -
#880
23.0.60; c-mode indentation and php
Previous Next
Reported by: Alan Mackenzie <acm <at> muc.de>
Date: Thu, 4 Sep 2008 08:35:02 UTC
Severity: normal
Merged with 877
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):
Hi, Lennart,
On Wed, Sep 03, 2008 at 11:34:04PM +0200, Lennart Borgman (gmail) wrote:
> In php-mode.el (not yet a part of Emacs, but has been discussed for
> inclusion) c-indent-line is used for indentation.
UUURRRKKK!!!
> That works nicely for the php code part of a php template page, but
> there is a disturbing glitch that probably can be fixed.
> Constructs like the one below are rather common.
> if (1) {
> ?>
> ...
> <?php
> }
> If you try to indent the line with the single "}" in c-mode it does not
> get aligned with "if (1) {". I have narrowed this down to
> if (1) {
> ?php
> }
> Adding a semicolon after "?php" makes everything work.
Without the semicolon, the close brace is on a "statement continued"
(statement-cont) line.
> Is the current indentation behaviour in this case useful in some way?
Yes. I'm characterising your "in this case" as "after a line lacking ;
or }". It's essential to normal C indentation. E.g.:
a = b + c // no semicolon
+ d ; // statement-cont (use C-s C-c) gets more indentation.
> Is there some option to change it?
Yes. Write a PHP-specific function to determine whether a line ends with
a "virtual semicolon", and set `c-at-vsemi-p-fn' to this function. This
mechanism is used for AWK Mode, and is described in detail in cc-defs.el
(search for "virtual").
> The example came from a bug report/question for nXhtml:
> https://answers.launchpad.net/nxhtml/+question/43320
> In GNU Emacs 23.0.60.1 (i386-mingw-nt5.1.2600)
> of 2008-09-03
> Windowing system distributor `Microsoft Corp.', version 5.1.2600
> configured using `configure --with-gcc (3.4) --no-opt --cflags
> -Ic:/g/include -fno-crossjumping'
--
Alan Mackenzie (Nuremberg, Germany).
This bug report was last modified 14 years and 87 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.