Emacs als PHP-Editor

Zusammenfassung

Mit php-mode existiert ein solides Paket, um mit Emacs PHP-Quelltext zu bearbeiten. Die Dokumentation zu diesem Paket ist jedoch leider so gut wie nicht vorhanden, so dass es erst einmal ein wenig Arbeit erfordert, sich anhand des Lisp-Quelltextes bis zu den Konfigurationsmöglichkeiten des Pakets vorzuarbeiten. Dieser Artikel soll die Lücke schließen und erläutern, wie man sich mit Hilfe von php-mode eine komfortable PHP-Editierumgebung schaffen kann. Das Paket/Emacs bieten Autovervollständigung von Funktionsnamen, Vorschau von Funktionsargumenten sowie kontextabhängiger Aufruf von Manual-Seiten direkt im Emacs-Fenster.

Inhalt

Meine Emacs- bzw. Lisp-Kenntnisse beschränken sich auf das, was man braucht, um Emacs als Programmiereditor zu benutzen. Für Anmerkungen und Korrekturen zu diesem Text bin ich daher besonders dankbar! ;-)

Voraussetzungen

Dieser Artikel bezieht sich auf SuSe Linux 9.3 mit Gnu Emacs 21.3. Auf anderen Umgebungen, insbesondere auf Windows-Systemen, muss man die hier vorgestellten Information ggf. entsprechend anpassen, vor allem, was zusätzlich installierte Software wie Lynx angeht.

Um die hier angebotenen Shellskripte nutzen zu können, brauchen Sie neben sh auch awk. Auf Windows müssen Sie sich Cygwin installieren, um diese Programme nutzen zu können (unabhängig davon ist Cygwin allgemein sehr nützlich und für Windowsbenutzer nur zu empfehlen).

Installation

Ich gehe davon aus, dass bereits eine Grundinstallation von Emacs auf dem Rechner vorhanden ist. Wenn nicht, sollte es mit Hilfe der einschlägigen Informationsquellen (Systemdokumentation, Google, siehe auch Links und weitere Informationen) möglich sein, eine solche herzustellen.

Auf meinem System ist php-mode bereits in der Standardinstallation von Emacs enthalten und befindet sich in der Datei /usr/share/emacs/site-lisp/php-mode.el (beziehungsweise .elc). Desweiteren muss der Modus in der Datei .emacs mit

(require 'php-mode) 

geladen werden. Gegebenenfalls muss man das Paket von http://sourceforge.net/projects/php-mode/ herunterladen und selbst in eines der Emacs-Paketverzeichnisse installieren. Das Emacs-Manual hilft hier weiter.

Konfigurationsreferenz

Die Konfiguration von Emacs ist in verschiedene Gruppen unterteilt. Unter anderem gibt es nach der Installation von php-mode auch eine Gruppe PHP. Man erreicht die Konfiguration im Emacs-Hauptmenü unter Options / Customize Emacs, und die Gruppe PHP unter Programming / Languages. In dieser Gruppe finden sich unter anderem die folgenden Konfigurationsoptionen:

Php Manual Url
Adresse (URL) des PHP-Manuals. Wichtig zum kontextabhängigen Aufruf von Manualseiten aus dem Quelltext. Ich habe hier http://www.php.net/manual/de/ angegeben.
Php Completion File
Pfad zu einer Datei mit PHP-Funktionsnamen. Eine der Alternativen zur Vervollständigung von Funktionsnamen (siehe auch Php Manual Path).
Php Manual Path
Lokaler Pfad zum PHP-Manual (inklusive Unterverzeichnis html). Eine der Alternativen zur Vervollständigung von Funktionsnamen (siehe auch Php Completion File).

Vervollständigung von Funktionsnamen

Für die automatische Vervollständigung von Funktionsnamen muss eine der Optionen Php Manual Path oder Php Completion File gesetzt sein.

Php Manual Path wird auf den lokalen Pfad des PHP-Manuals gesetzt. php-mode extrahiert die Namen der Funktionen zur Vervollständigung aus den Namen der HTML-Dateien des PHP-Manuals. Dies ist langsam, daher sollte lieber Php Completion File benutzt werden.

Php Completion File enthält den Pfad zu einer Datei mit PHP-Funktionsnamen. Die Syntax der Datei ist einfach - ein Funktionsname pro Zeile. Wenn Php Completion File gesetzt ist, wird diese Option benutzt und hat Vorrang gegenüber Php Manual Path.

Das Shellskript phpfunktionen extrahiert die Namen der PHP-Funktionen, wenn man es im Unterverzeichnis html des PHP-Manuals ausführt. Alternativ können Sie sich gleich die Datei phpfunktionen.txt herunterladen (keine Garantie auf Vollständigkeit).

Anwendung

Die Vervollständigung des aktuell eingetippten Funktionsnamens wird mit M-<Tab> aufgerufen.

Vorschau von Funktionsargumenten mit etags

Die Vorschau von Funktionsargumenten ist gerade bei PHP sehr nützlich, weil die Funktionen nicht systematisch definiert sind. Anstatt umständlich in der Dokumentation nachzuschlagen, reicht es oft, sich die Definition der aktuellen Funktion anzeigen zu lassen, um sich beispielsweise zu vergewissern, welches die richtige Reihenfolge der Funktionsparameter ist.

Um die Funktionsvorschau benutzen zu können, benötigt man zwei Dateien namens TAGS und phpetags.php. Sie können die Dateien TAGS- und phpetags.php für PHP 5.2 fertig herunterladen (keine Garantie auf Vollständigkeit).

Wenn Sie diese Dateien anhand Ihrer PHP-Version selbst generieren wollen, müssen Sie zunächst eine geeignete Definition für das Emacs-Hilfsprogramm etags herstellen:

  1. Den relevanten Teil der PHP-Dokumentation auschecken:
    cvs -d :pserver:cvsread@cvs.php.net:/repository checkout phpdoc/en/reference

    Wechseln Sie danach in das Verzeichnis phpdoc/en/reference.

  2. Das Shellskript phpetags ausführen (dafür muss xsltproc installiert sein). Dies dauert eine Weile, danach befindet sich im aktuellen Verzeichnis eine Datei phpetags.php mit Definitionen aller PHP-Funktionen. Legen Sie diese Datei irgendwo dauerhaft ab.
  3. Das etags-Dienstprogramm mit dem Pfad zur eben erstellten Datei aufrufen:
    etags phpetags.php

    Nun befindet sich im aktuellen Verzeichnis eine Datei namens TAGS. Diese enthält, zusammen mit phpetags.php, die Informationen, die Emacs zur Funktionsvorschau benötigt.

Anwendung

Die Funktionsvorschau der aktuellen Funktion im Emacs (vor dem Cursor) wird mit C-. (C + "Punkt") aufgerufen. Jetzt will Emacs einmalig noch den Pfad zur TAGS-Datei wissen. Danach wird die Funktionsdefinition in der Statuszeile angezeigt:

Funktionsvorschau in Emacs

Hinweis: optionale Argumente werden momentan immer mit Rückfallwert = null angegeben.

Kontextabhängiger Aufruf von Manual-Seiten

Eine weitere sehr nützliche Funktion von php-mode ist der Aufruf der PHP-Manual-Seite zu der gerade eingetippten Funktion. Dafür muss die Konfigurationsoption Php Manual Url gesetzt sein.

Anwendung

Die Manualseite der aktuellen Funktion (vor dem Cursor) wird mit C-c C-f aufgerufen.

Welcher Browser aufgerufen wird, um die Seite anzuzeigen, hängt von einer weiteren Einstellung im Emacs ab: Browse Url Browser Function (in den Konfigurationsgruppen unter Hypermedia / Browse Url). Hier kann man einen Browser angeben.

Besonders schick ist die Angabe von Lynx. Bei dieser Einstellung wird die Manual-Seite im Textbrowser Lynx direkt im Emacs-Fenster angezeigt. Bequemer und schneller kommt man wahrscheinlich nicht zur PHP-Dokumentation - und ganz nebenbei erfährt man so endlich, warum man die ganzen Webseiten auch in Textbrowsern anzeigbar gestalten sollte ;-)

[Lynx-Konfiguration]

www.emacswiki.org/ - Wiki mit zusätzlicher Dokumentation zu Emacs und Paketen

http://sourceforge.net/projects/php-mode/ - Sourceforge-Seite von php-mode

Tastenkombinationen

C-h m
Informationen zum aktuellen mode
M-x apropos RET php RET
Liefert Funktionen und Variablen, die die Zeichenkette php enthalten

Änderungshistorie:

Version Datum Änderung
0.5 19.02.07 Neu

Letzte Änderung: 12/11/12, 15:15:13 Uhr