Я начал болезненные первые шаги использования emacs для редактирования HTML-файла с HTML-тегами и содержимым javascript. Я установил nxhtml и попытался его использовать, то есть настроил режим nxhtml-mumamo-mode для файлов .html. Но мне это не нравится. Когда я редактирую часть кода Javascript, отступы табуляции не работают, как при редактировании кода C / C ++. Он начинает помещать табуляторы в строку, и если вы попытаетесь нажать табуляцию в пустом пространстве перед строкой, он вставит табуляцию, а не повторно табулирует строку.
Еще один аспект, который мне не нравится, заключается в том, что он не окрашивает синтаксис, как это делают обычные режимы C / C ++. Я очень предпочитаю поведение java-режима по умолчанию при редактировании файлов HTML, но это не очень хорошо сочетается с кодом HTML. :-(
1) Есть ли лучший режим для редактирования файлов HTML с частями Javascript?
2) Есть ли способ заставить nxhtml использовать java-режим по умолчанию для частей javascript?
С Уважением,
M
источник
<script src>
. Вы можете смотреть их оба с небольшим количествомC-x 2
илиC-x 3
и иметь режим для каждого. : - /Ответы:
Другое решение
multi-web-mode
:https://github.com/fgallina/multi-web-mode
который может быть более легко настраиваемым, чем уже упомянутый
multi-mode
.Вы просто настраиваете предпочтительные режимы в своем
.emacs
файле следующим образом:Подробнее о множественных режимах Emacs (вздох) здесь:
http://www.emacswiki.org/emacs/MultipleModes
ОБНОВЛЕНИЕ: упрощены регулярные выражения для обнаружения областей JavaScript или CSS, чтобы заставить их работать с HTML5 - нет необходимости в сверхточных и хрупких регулярных выражениях.
источник
(js-mode "<script[^>]*>" "</script>") (css-mode "<style[^>]*>" "</style>")
Я написал основной режим web-mode.el для такого использования: редактирование HTML-шаблонов, которые включают JS, CSS, Java (JSP), PHP. Вы можете скачать его с http://web-mode.org. Web-mode.el выделяет синтаксис и делает отступы в зависимости от типа блока. Установка проста:
источник
Отличный вопрос. Посмотрите, сколько голосов вы получили за свой первый!
У всех такой же опыт, как и у вас. Я тоже.
Вместо того, чтобы полагаться на nhtml-mode, который продемонстрировал для меня такую же странность, как вы описали, я поискал другой вариант и нашел multi-mode.el . Это своего рода многорежимный каркас общего назначения. Чтобы использовать его, вам нужно указать регулярные выражения, чтобы описать, где начинается один режим и заканчивается другой. Итак, вы ищете,
<script...>
чтобы запустить блок javascript и<style...>
запустить блок css. Затем вы подключаете свои собственные режимы для каждого блока - если вам нравится эспрессо для javascript, используйте его. И так далее для других регулярных выражений, которые определяют другие блоки.На практике, когда вы перемещаетесь по документу, для каждого блока включается свой режим.
Я использовал многорежимный режим для создания ASP.NET, который позволяет мне редактировать C #, HTML, CSS и Javascript в одном файле с правильным выделением и фонированием в зависимости от того, где находится курсор в буфере. Это не идеально, но я обнаружил, что это заметное улучшение существующих возможностей. На самом деле это может быть то, что вы хотите. Попробуйте сами.
https://code.google.com/p/csharpmode/source/browse/trunk/aspx-mode.el?r=14
источник
Не совсем хорошее решение, но быстрое исправление, если вам действительно нужен javascript в вашем html, - это выбрать область, содержащую javascript, и использовать команду
narrow-to-region
(C-x n n
), а затем переключиться в предпочтительный режим javascript. Командаwiden
возвращает вас (C-x n w
).источник
Похоже, вы неправильно настроили свой nxhtml. Единственная необходимая настройка - это загрузка
autostart.el
файла, и тогда все должно работать до определенного уровня. nxhtml никоим образом не идеален, но мой опыт использования его для html / css / javascript / mako довольно хорош, по крайней мере, для всего, кроме mako. Но я почти уверен, что напортачил с мако-партией.Вот как я инициализирую свой nxhtml:
источник