Ich habe die schmerzhaften ersten Schritte der Verwendung von Emacs zum Bearbeiten einer HTML-Datei mit HTML-Tags und Javascript-Inhalten begonnen. Ich habe nxhtml installiert und versucht, es zu verwenden - dh so eingerichtet, dass es den nxhtml-mumamo-Modus für HTML-Dateien verwendet. Aber ich liebe es nicht. Wenn ich den Javascript-Teil des Codes bearbeite, verhalten sich die Tabulatoreinzüge nicht so wie beim Bearbeiten von C / C ++ - Code. Es beginnt damit, Tabulatoren in die Zeile einzufügen. Wenn Sie versuchen, die Tabulatortaste im Leerzeichen vor einer Zeile zu drücken, wird die Registerkarte eingefügt, anstatt die Zeile erneut zu tabellieren.
Ein weiterer Aspekt, den ich nicht mag, ist, dass es keine Syntaxfärbung wie die üblichen C / C ++ - Modi ausführt. Ich bevorzuge das Verhalten des Standard-Java-Modus beim Bearbeiten von HTML-Dateien, aber das passt nicht gut zum HTML-Code. :-(
1) Gibt es einen besseren Modus zum Bearbeiten von HTML-Dateien mit Javascript-Teilen?
2) Gibt es eine Möglichkeit, nxhtml dazu zu bringen, den Standard-Java-Modus für die Javascript-Teile zu verwenden?
Grüße,
M.
quelle
<script src>
. Sie können beide mit ein bisschenC-x 2
oder sehenC-x 3
und für jeden einen Modus haben. : - /Antworten:
Eine andere Lösung ist
multi-web-mode
:https://github.com/fgallina/multi-web-mode
die möglicherweise einfacher zu konfigurieren ist als die bereits erwähnten
multi-mode
.Sie konfigurieren einfach Ihre bevorzugten Modi in Ihrer
.emacs
Datei wie folgt:Mehr zu den verschiedenen Modi von Emacs (Seufzer) hier:
http://www.emacswiki.org/emacs/MultipleModes
UPDATE: Vereinfachte die regulären Ausdrücke, um JavaScript- oder CSS-Bereiche zu erkennen, damit sie mit HTML5 funktionieren - keine superpräzisen und fragilen regulären Ausdrücke erforderlich.
quelle
(js-mode "<script[^>]*>" "</script>") (css-mode "<style[^>]*>" "</style>")
Ich habe den Hauptmodus web-mode.el für diese Art der Verwendung geschrieben: Bearbeiten von HTML-Vorlagen, in die JS, CSS, Java (JSP), PHP eingebettet sind. Sie können es unter http://web-mode.org herunterladen. Web-mode.el führt Syntaxhervorhebungen und Einrückungen entsprechend dem Blocktyp durch. Die Installation ist einfach:
quelle
Gute Frage. Schauen Sie, wie viele Upvotes Sie bei Ihrem ersten erhalten haben!
Jeder hat die gleiche Erfahrung wie Sie. Ich auch.
Anstatt mich auf den nhtml-Modus zu verlassen, der für mich die gleiche Art von Fremdheit aufwies wie Sie beschrieben, suchte ich nach einer anderen Option und fand multi-mode.el . Es ist eine Art Allzweck-Multimode-Skelett. Um es zu verwenden, müssen Sie reguläre Ausdrücke angeben, um zu beschreiben, wo ein Modus beginnt und ein anderer endet. Sie suchen also
<script...>
nach einem Javascript-Block und<style...>
einem CSS-Block. Dann schließen Sie Ihre eigenen Modi für jeden Block an - wenn Sie Espresso für Javascript mögen, verwenden Sie ihn. Und so weiter für die anderen regulären Ausdrücke, die andere Blöcke identifizieren.In der Praxis wird beim Navigieren durch das Dokument für jeden Block ein anderer Modus aktiviert.
Ich habe Multi-Mode verwendet, um ein ASP.NET zu erstellen, mit dem ich C #, HTML, CSS und Javascript in einer einzigen Datei bearbeiten kann. Die richtige Hervorhebung und Schriftart hängt davon ab, wo sich der Cursor im Puffer befindet. Es ist nicht perfekt, aber ich fand es eine deutliche Verbesserung der bestehenden Möglichkeiten. In der Tat kann dies sein, was Sie wollen. Versuch es.
https://code.google.com/p/csharpmode/source/browse/trunk/aspx-mode.el?r=14
quelle
Keine wirklich gute Lösung, aber eine schnelle Lösung, wenn Sie wirklich Javascript in Ihrem HTML benötigen, besteht darin, die Region auszuwählen, die Javascript enthält, und den Befehl
narrow-to-region
(C-x n n
) zu verwenden und dann in Ihren bevorzugten Javascript-Modus zu wechseln. Der Befehlwiden
bringt Sie zurück, (C-x n w
).quelle
Es hört sich so an, als hätten Sie Ihr nxhtml falsch eingerichtet. Das einzige Setup, das erforderlich ist, sollte das Laden der
autostart.el
Datei sein, und dann sollte alles bis zu einem gewissen Grad funktionieren. nxhtml ist in keiner Weise perfekt, aber meine Erfahrungen mit der Verwendung für html / css / javascript / mako sind ziemlich gut, zumindest für alles außer mako. Aber ich bin mir ziemlich sicher, dass ich den Mako-Teil vermasselt habe.So initialisiere ich mein nxhtml:
quelle