I want to thanks the testers, especially Hadron Quark and Eric Lilja, for helping me by testing and pointing out bugs and weaknesses, most related to editing of PHP.
It is quite a big job trying to get rid of smaller annoying bugs and bigger ones. In my mailbox folder for nXhtml I have more than 500 old messages currently.
I have more and more come to realize that there are two main parts of nXhtml which are in quite different degrees of maturity. The reason for the difference is mainly that one of them, mumamo-mode, requires very tight integration with Emacs in a way that currently is not completely possible. Some things must be changed in Emacs for this. There are also things to discover in the interactions with other minor modes for example.
That said I still think mumamo-mode is mature enough for serious use (though it sometimes conflicts with some other modules).
The other part, nxhtml-mode, is more mature, since it stands more by itself and since it builds on the very stable nxml-mode. I would not say nxhtml-mode is finished, but it is stable and useful.
Sometimes the major mode that Emacs opens a file in is not what you expect. This can happen with files like PHP files. The reason might be that magic-mode-alist have choosen a mode based on the content of the file. The way this is done does not take files with mixes a mix of for example XHTML and PHP into account.
You may try setting magic-mode-alist to nil if this is a problem for you.
This is now no longer necessary since the introduction of magic-fallback-mode-alist in CVS Emacs on 2007-05-16. (If you have an Emacs newer than that, of course.)
Because of a bug in Emacs 22.1 you can sometimes (at the end of a line) get long red lines instead of just a single underlined character. Many users (me included) find this quite a bit disturbing. I have therefore added a command to quickly hide/show the underlines. This is on C-c C-w.
This is particular useful for example in the case where you edit a PHP file and are bound to get a lot of XHTML validation errors.
If you want to have attribute values computed by PHP here is a way how to structure that to avoid breaking completion and validation in the XHTML part unnessecary:
<img src="images/linux.png" title="<?php foo("bar");?>"/>
Unfortunately that still breaks XHTML validation since < is not allowed in strings. In the long run I believe the XML validator has to be broken up so that it avoids parsing the string here (in PHP files).
For now I have implemented a workaround. If you are using constructs like those above then turn on nxhtml-strval-mode. This will temporarily replace the above with
<img src="images/linux.png" title="«?php foo("bar");?»"/>
However on the screen you will still see the original string and when writing to file the correct characters will be used.
The rules for a process instruction in XML, like <?php ... ?> says that the text can contain any text except ?>. So if you want to output that string from PHP then break it up so it does not look as ?> in the source file.
It might be good to break up the beginning part of the process instructions too. And please note that to use XHTML validation or completion you should avoid using < in strings, since it is not allowed there.
Perl mode used with MuMaMo mode sometimes makes the fontification slow for big files. I do not know the reason, but I am trying to find a solution for this. If you encounter this problem, just turn off mumamo-mode in that buffer.
Do you have tab-width to something different than 8 (the default)? Then please change this to 8. I have got reports of problem with indentation when it is not 8.
Some people have asked why the way to specify chunks in mumamo-mode is not compatible with the old mmm-mode. The answer is that I was not sure that the way used in mmm-mode for specifying the chunks was flexible enough.
And I am sure that even the way used in mumamo-mode is not good enough for all cases, but I let it be the way it is until I have a better understanding of the problem. Suggestions and comments are welcome!