GNU bug report logs - #880
23.0.60; c-mode indentation and php

Previous Next

Package: notemacs;

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


View this message in rfc822 format

From: Alan Mackenzie <acm <at> muc.de>
To: "Lennart Borgman \(gmail\)" <lennart.borgman <at> gmail.com>
Cc: emacs-pretest-bug <at> gnu.org
Subject: bug#880: 23.0.60; c-mode indentation and php
Date: Thu, 4 Sep 2008 08:33:17 +0000
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.