js2-mode and php mode -- both work with emacs 23.1