Ответ 1
Я думаю, что mumamo обычно используется для этого. http://www.emacswiki.org/emacs/MuMaMo
обычно код выглядит примерно так:
<html>
<head>
<style type="text/css">
body { font-size:12pt; font-family: Arial;}
....
</style>
<script type="text/javascript" src="jquery.1.3.2js"></script>
<script type="text/javascript">
<!--
$(document).ready(function(){
...
});
...
-->
</script>
<meta ... />
</head>
<body>
<div>
<p>
....
</p>
...
</div>
....
</body>
</html>
Мне нравится javascript-режим для подсветки синтаксиса и отступов. Аналогично для sgml-режима для HTML. Также я получаю автозаполнение открытых тегов. Css-режим не так важен, поэтому он не настолько приоритет.
Это 3 разных языка и 3 режима. Прямо сейчас, когда я редактирую разные разделы, я меняю режим вручную. Это работает, вроде.
Кто-нибудь получил лучший подход?
Я думаю, что mumamo обычно используется для этого. http://www.emacswiki.org/emacs/MuMaMo
С тех пор, как web-mode появился, я избавился от mumamo и nxhtml. веб-режим проще в использовании и установке. Для начала он использует различную подсветку синтаксиса и отступы смешанного файла js/html/css. Но для меня очень удобная вещь в том, что она работает на других языках шаблонов. Вот пример конфигурации с их сайта:
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.jsp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
Я использую nXhtml для emacs. Цитата из страницы
Одной из основных частей nXhtml является nxhtml-режим, основной режим GNU Emacs, который основывается на nxml-режиме. Он знает о синтаксисе XHTML и может проверить это при вводе. Он также может рассказать вам, какие теги и атрибуты вы можете использовать в определенный момент и помочь вам вставить их.
Эта функция, которую мы называем завершением, является одной из основных особенностей этого режима. Еще одна важная особенность - возможность смешать несколько языков в одном буфере и получить правильную подсветку синтаксиса и отступы для каждого из них.
Мне было бы жалко называть мой подход лучше, но fwiw, я избегаю такой ситуации, как чума, помещая CSS в файлы .css и javascript в .js файлы, а затем помещаю теги "include" в html файл. Затем Emacs обрабатывает все красиво. По общему признанию, имея три больших монитора с полноэкранным Emacs, каждый из них создает боковые буферы, содержащие файлы, которые мне практически не нужны. -:) И это не очень хорошо работает в корпоративной среде, где я не контролирую то, что другие инженеры предпочитают делать.
Для сравнения, вот некоторые из доступных режимов, начиная с 2014-07-04:
| library | files | size | last update | url | |----------------+-------+---------+-------------+-----------------------------------------------------| | web-mode | 1 | 279 kb | 2014-07-03 | https://github.com/fxbois/web-mode | | polymode | 7 | 120 kb | 2014-06-14 | https://github.com/vitoshka/polymode | | mmm-mode | 17 | 185 kb | 2014-02-12 | https://github.com/purcell/mmm-mode | | multi-web-mode | 1 | 16 kb | 2013-08-23 | https://github.com/fgallina/multi-web-mode | | mumamo | 115 | 3090 kb | 2010-04-25 | http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html | | multi-mode | 1 | 23 kb | 2009 | http://www.loveshack.ukfsn.org/emacs/multi-mode.el |
Также добавлен в Emacs Wiki: http://www.emacswiki.org/emacs/MultipleModes
Мульти-веб-режим является относительно новым и активно обновляется, захватывает его от elpa (package.el)
Вы можете увидеть источник и документы здесь https://github.com/fgallina/multi-web-mode