2013-07-25 5 views
12

Meine aktuelle Einstellung in Emacs für PHP-Entwicklung hat eine Vielzahl von Mängeln. Ich benutze oft einen gemischten Modus von HTML und PHP. Ich möchte, dass der Modus erkennt, in welchem ​​Kontext ich mich befinde und formatiere ihn entsprechend. Ich interessiere mich besonders für das passende Tabbing. Das ist das wichtigste Merkmal für mich. Korrekte Färbung wäre schön, aber wenn es hin und wieder etwas vermasselt, ist das in Ordnung.Wie konfiguriere ich Emacs für die richtige PHP-Entwicklung?

ich derzeit multi-web-mode und die Standard-php-mode in Emacs 24.3 auf MacOS X.

Einer der frustrierenden Probleme Einbeziehung der heredoc Syntax bin mit: echo <<< Meine aktuelle System erkennt nicht, dass diese Syntax sein muss NICHT tabbed. Ich erhalte normalerweise Warnungen wie folgt aus:

Indentation fails badly with mixed HTML/PHP in the HTML part in 
plaín `php-mode'. To get indentation to work you must use an 
Emacs library that supports 'multiple major modes' in a buffer. 
Parts of the buffer will then be in `php-mode' and parts in for 
example `html-mode'. Known such libraries are: 
    mumamo, mmm-mode, multi-mode 
You have these available in your `load-path': 
    mumamo 

ich schon versucht habe, mit mumao/nxhtml aber das hat mir nicht die Ergebnisse, die ich wollte. In mancher Hinsicht war es schlimmer. Ich würde wirklich alle Tipps schätzen, die Menschen haben, um eine funktionierende PHP-Entwicklungsumgebung für Emacs zu bekommen.

+7

Re: die Abstimmung, um diese Frage zu schließen. Das Help Center gibt an, dass eine Frage, die sich auf "Software-Tools bezieht, die von Programmierern häufig verwendet werden", in den Bereich von Stack Overflow fällt. – Avery

Antwort

11

Ich verwende web-mode() für gemischte HTML/PHP-Dateien und php-mode für reine PHP-Dateien. Die neueste Version von php-mode auch empfohlen web-mode für gemischte HTML/PHP-Dateien: https://github.com/ejmr/php-mode#avoid-html-template-compatibility.

Im Gegensatz zu anderen Modi wie mmm-mode, mumamo oder multi-web-mode, die unterschiedliche Verhalten auf verschiedene Teile eines Puffer anzuwenden versuchen, ist web-mode bewusst alle verfügbaren Syntax/Vorlage, die mit HTML gemischt werden kann. Sie können auch web-mode für gemischte HTML-Dateien/Vorlagen wie Twig, Django, ERB verwenden ... Tatsächlich verwende ich web-mode für alles HTML.

Es gibt jedoch einen Haken für PHP-Vorlage: Andere Vorlagensysteme haben unterschiedliche Dateierweiterungen, so dass es einfach ist, den Modus automatisch zu wechseln, aber PHP-Vorlagen verwenden normalerweise die gleiche .php Erweiterung; also muss ich es durch Ordner wechseln lassen oder manuell manuell aufrufen M-x Web-Modus. Hier ist meine aktuelle Konfiguration:

(defun add-auto-mode (mode &rest patterns) 
    (mapc (lambda (pattern) 
      (add-to-list 'auto-mode-alist (cons pattern mode))) 
     patterns)) 

(add-auto-mode 'web-mode 
       "*html*" "*twig*" "*tmpl*" "\\.erb" "\\.rhtml$" "\\.ejs$" "\\.hbs$" 
       "\\.ctp$" "\\.tpl$" "/\\(views\\|html\\|templates\\)/.*\\.php$") 

BTW, versuchen Sie Ihre PHP-Dateien und Vorlagen zu trennen und halten Sie die gemischte HTML/PHP-Datei so einfach wie möglich (refactor lange PHP Blöcke in Funktionen in einer reinen Datei). Der Code wird leichter zu lesen/zu folgen sein.

Verwandte Themen