J'ai commencé les douloureuses premières étapes de l'utilisation d'emacs pour éditer un fichier HTML avec à la fois des balises HTML et du contenu javascript. J'ai installé nxhtml et essayé de l'utiliser - c'est-à-dire configuré pour utiliser nxhtml-mumamo-mode pour les fichiers .html. Mais je n'aime pas ça. Lorsque j'édite la partie Javascript du code, les retraits de tabulation ne se comportent pas comme ils le font lors de l'édition de code C / C ++. Il commence à mettre des onglets dans la ligne et si vous essayez d'appuyer sur l'onglet dans l'espace blanc précédant une ligne, il insère l'onglet plutôt que de re-tabifier la ligne.
Un autre aspect que je n'aime pas est qu'il ne fait pas de coloration syntaxique comme les modes C / C ++ habituels. Je préfère de loin le comportement du mode java par défaut lors de l'édition de fichiers HTML, mais cela ne fonctionne pas bien avec le code HTML. :-(
1) Existe-t-il un meilleur mode pour éditer des fichiers HTML avec des parties Javascript?
2) Existe-t-il un moyen pour que nxhtml utilise le mode java par défaut pour les parties javascript?
Cordialement,
M
la source
<script src>
. Vous pouvez les regarder tous les deux avec un peu deC-x 2
ouC-x 3
et avoir un mode pour chacun. : - /Réponses:
Une autre solution est
multi-web-mode
:https://github.com/fgallina/multi-web-mode
qui peut être plus facilement configurable que celui déjà mentionné
multi-mode
.Vous configurez simplement vos modes préférés dans votre
.emacs
fichier comme ceci:Plus d'informations sur les multiples modes multiples d'Emacs (soupir) ici:
http://www.emacswiki.org/emacs/MultipleModes
MISE À JOUR: simplification des expressions rationnelles pour détecter les zones JavaScript ou CSS pour les faire fonctionner avec HTML5 - pas besoin d'expressions régulières super précises et fragiles.
la source
(js-mode "<script[^>]*>" "</script>") (css-mode "<style[^>]*>" "</style>")
J'ai écrit le mode majeur web-mode.el pour ce type d'utilisation: l'édition de modèles HTML qui intègrent JS, CSS, Java (JSP), PHP. Vous pouvez le télécharger sur http://web-mode.org Web-mode.el fait la coloration syntaxique et l'indentation en fonction du type de bloc. L'installation est simple:
la source
Excellente question. Regardez combien de votes positifs vous avez obtenus sur votre premier!
Tout le monde a la même expérience que vous. Moi aussi.
Plutôt que de me fier au mode nhtml qui présentait le même genre d'étrangeté pour moi que vous l'avez décrit, j'ai cherché une autre option et j'ai trouvé multi-mode.el . C'est une sorte de squelette multi-mode à usage général. Pour l'utiliser, vous devez spécifier des expressions régulières pour décrire où un mode commence et un autre se termine. Donc, vous cherchez
<script...>
à démarrer un bloc javascript et<style...>
à démarrer un bloc css. Ensuite, vous branchez vos propres modes pour chaque bloc - si vous aimez l'espresso pour javascript, utilisez-le. Et ainsi de suite pour les autres expressions rationnelles qui identifient d'autres blocs.En pratique, lorsque vous naviguez dans le document, un mode différent est activé pour chaque bloc.
J'ai utilisé le multi-mode pour produire un ASP.NET, qui me permet d'éditer C #, HTML, CSS et Javascript dans un seul fichier, avec la mise en évidence et la police appropriées en fonction de l'emplacement du curseur dans le tampon. Ce n'est pas parfait mais j'ai trouvé que c'était une nette amélioration par rapport aux possibilités existantes. En fait, c'est peut-être ce que vous voulez. Essaye le.
https://code.google.com/p/csharpmode/source/browse/trunk/aspx-mode.el?r=14
la source
Ce n'est pas vraiment une bonne solution mais une solution rapide si vous avez vraiment besoin d'avoir du javascript dans votre html est de sélectionner la région contenant du javascript et d'utiliser la commande
narrow-to-region
(C-x n n
) puis de passer à votre mode javascript préféré. La commandewiden
vous ramène, (C-x n w
).la source
Il semble que vous ayez mal configuré votre nxhtml. La seule configuration nécessaire devrait être le chargement du
autostart.el
fichier, puis tout devrait fonctionner à un certain niveau. nxhtml n'est en aucun cas parfait, mais mon expérience de son utilisation pour html / css / javascript / mako est plutôt bonne, du moins pour tout sauf mako. Mais je suis presque sûr que j'ai foiré avec la partie mako.Voici comment j'initialise mon nxhtml:
la source