PHP-Dateien mit dem Emacs bearbeiten
Da es scheinbar keinen vernünftigen Emacs Modus für das
editieren von PHP-Dateien gibt und man eigentlich ganz gut mit
einer Mischung aus c++-mode und hm--html-mode
fährt habe ich mir zum schnellen Umschalten zwischen diesen
beiden Modi einfach zwei Tasten in meiner ~/.emacs
definiert.
(global-set-key [f11] 'hm--html-mode)
(global-set-key [f12] 'c++-mode) | |
Das ist zwar eine Möglichkeit, aber so ganz befriedigend ist
es noch nicht.
Ein Möglichkeit zum Umschalten zwischen diesen beiden Modi
musste also her. Nach einiger Suche bin ich dann über
mml und mml-mode gestolpert, die mich aber auch
nicht unbedingt überzeugen konnten. Schlußendlich bin
ich beim einfachen two-mode.el von
David Welton gelandet.
Was bietet two-mode?
Der two-mode-mode ist ein Minor-Mode, der
automatisch zwischen zwei verschiedenen Major-Modes umschalten
kann. Damit das funktioniert muß man ihm nur mitteilen
welches der Standard- und welches der Sekundärmodus sein soll
und woran er erkennen kann wo ein Bereich für den
Sekundärmodus beginnt und wo er endet.
Wie installiere ich two-mode?
Bei der Beschreibung der Installation gehe ich davon aus,
daß sowohl cc-mode als auch
hm--html-mode bereits auf dem Rechner installiert sind.
1. Download
Hier ist ein
Archiv, in dem sich eine an unsere Bedürfnisse angepasste
two-mode.el befindet.
2. Installieren
Hier am Beispiel von XEmacs unter /usr/local/ für
andere Pfade oder Emacs einfach entsprechend anpassen.
$ gunzip 20000416-emacsphp.tar.gz | tar xf -
$ xemacs two-mode-mode.el
M-x byte-compile-file
C-x C-c
$ su
$ mv two-mode-mode.el* /usr/local/lib/xemacs/site-lisp/
$ exit
| |
3. Einbinden
Der Teil der ~/.emacs für das Setup für php-
und html-Dateien sieht bei mir wie folgt aus:
;; PHP
(require 'cc-mode)
(autoload 'hm--html-mode "hm--html-mode" "HTML major mode." t)
(autoload 'hm--html-minor-mode "hm--html-mode" "HTML minor mode." t)
(or (assoc "\\.html$" auto-mode-alist)
(setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
auto-mode-alist)))
(or (assoc "\\.tmpl$" auto-mode-alist)
(setq auto-mode-alist (cons '("\\.tmpl$" . hm--html-mode)
auto-mode-alist)))
(require 'two-mode-mode)
(or (assoc "\\.php3$" auto-mode-alist)
(setq auto-mode-alist (cons '("\\.php3$" . two-mode-mode)
auto-mode-alist)))
(or (assoc "\\.php$" auto-mode-alist)
(setq auto-mode-alist (cons '("\\.php$" . two-mode-mode)
auto-mode-alist)))
(or (assoc "\\.phtml$" auto-mode-alist)
(setq auto-mode-alist (cons '("\\.phtml$" . two-mode-mode)
auto-mode-alist)))
(add-hook 'hm--html-mode-hook (function (lambda ()
(setq font-lock-mode t)
(auto-fill-mode))))
| |
Nach den Änderungen entweder die Datei ~/.emacs per
M-x load-file neu laden oder einfach den Emacs neu
starten.
So ganz optimal ist diese Lösung auch noch nicht, da im
Sekundären Modus die Perfermance doch ziemlich in den Keller
geht, aber besser als nichts ist es allemal. Mittelfristig wird aber
an der Entwicklung eines vernünftigen php-Modus kein Weg
vorbeiführen, da sich der hm--html-mode doch öfter
durch vorangehenden php-Code verwirrt zeigt.
Links zum Thema
Bücher zum Thema