В ответе Дэна Сингермана есть проблема, что заголовок должен быть использован сразу, из-за асинхронного характера ajax jQuery. Однако с его сервером приложений Google я написал следующее, чтобы заголовок был установлен как часть первоначальной настройки и может быть использован позднее.
<html>
<head>
<script>
var bLocale='raw'; // can be used at any other place
function processHeaders(headers){
bLocale=headers['Accept-Language'];
comma=bLocale.indexOf(',');
if(comma>0) bLocale=bLocale.substring(0, comma);
}
</script>
<script src="jquery-1.11.0.js"></script>
<script type="application/javascript" src="http://ajaxhttpheaders.appspot.com?callback=processHeaders"></script>
</head>
<body>
<h1 id="bLocale">Should be the browser locale here</h1>
</body>
<script>
$("#bLocale").text(bLocale);
</script>
</html>
Я думаю, что мумамо обычно используется для этого. http://www.emacswiki.org/emacs/MuMaMo
С тех пор, как появился веб-режим , я избавился от 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))
Multi-web-mode является относительно новым и активно обновляется, скачайте его с elpa (package.el)
Вы можете посмотреть исходный код и документы здесь https://github.com / fgallina / multi-web-mode
Я использую nXhtml для emacs. Цитирование со страницы
Одной из основных частей nXhtml является nxhtml-mode, основной режим GNU Emacs, основанный на nxml-режиме. Он знает о синтаксисе XHTML и может проверять это по мере ввода. Он также может сказать вам, какие теги и атрибуты вы можете использовать в определенный момент, и поможет вам вставить их.
Эта функция, которую мы называем завершением, является одной из основных функций этого режима. Еще одной важной особенностью является возможность смешивать несколько языков в одном буфере и получать правильную подсветку синтаксиса и отступы для каждого из них.
Я бы не хотел называть свой подход лучше, но, между прочим, я избегаю такой ситуации, как чума, помещая 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