2010-12-16 3 views
90

Я начал мучительные первые шаги использования emacs для редактирования HTML-файла с HTML-тегами и содержимым javascript. Я установил nxhtml и попытался использовать его - i.e настроил для использования nxhtml-mumamo-mode для .html-файлов. Но я не люблю это. Когда я редактирую часть Javascript кода, вкладки вкладки не ведут себя так же, как при редактировании кода C/C++. Он начинает помещать вкладки внутри строки, и если вы попытаетесь нажать на вкладку в белом пробеле перед строкой, она вставляет вкладку, а не перетаскивает строку.Как настроить emacs для редактирования файлов HTML, содержащих Javascript?

Другой аспект, который мне не нравится, заключается в том, что он не выполняет синтаксическую раскраску, как это делают обычные режимы C/C++. Я предпочитаю поведение java-режима по умолчанию при редактировании HTML-файлов, но это не очень хорошо сочетается с кодом HTML. :-(

1) Есть ли лучший режим для редактирования файлов HTML с частями Javascript?

2) Есть ли способ заставить nxhtml использовать java-режим по умолчанию для частей javascript?

С уважением,

M

+0

Я использую МММ-режим, который в теории делает это, но это своего рода Sucky, я не так уж счастлива с ним. Я вложил много lisp в мою конфигурацию из emacswiki, но на самом деле не потратил на нее недель. Я бы хотел, чтобы это было проще для тех из нас, кто больше интересовался использованием emacs, чем настройкой. – Nathan 2010-12-16 19:27:02

+1

Я предполагаю, что обходной путь создает два файла и ссылается на файл javascript с `

6

не очень хорошее решение, но быстрое решение, если вы действительно должны иметь JavaScript в вашем HTML, чтобы выбрать область, содержащую яваскрипт и использовать команду narrow-to-region (C-x n n), а затем переключиться на выбранный вами JavaScript Режим. Команда widen возвращает вас, (C-x n w).

0

Похоже, что вы неправильно настроили свой nxhtml. Единственной необходимой настройкой должна быть загрузка файла autostart.el, и тогда все должно работать на некотором уровне. nxhtml не идеален, но мой опыт использования его для html/css/javascript/mako довольно хорош, по крайней мере, для всего, кроме мако. Но я почти уверен, что я испортил мако-часть.

Это, как я инициализировать мой nxhtml:

(when (load "autostart.el" t) 
    (setq nxhtml-skip-welcome t 
     mumamo-chunk-coloring 'submode-colored 
     indent-region-mode t 
     rng-nxml-auto-validate-flag nil)) 
39

Другим решением является multi-web-mode:

https://github.com/fgallina/multi-web-mode

, которые могут быть более легко настраивается, чем уже упоминалось multi-mode.

Вы просто настроить предпочтительные режимы в вашем .emacs файл, например так:

(require 'multi-web-mode) 
(setq mweb-default-major-mode 'html-mode) 
(setq mweb-tags 
    '((php-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>") 
    (js-mode "<script[^>]*>" "</script>") 
    (css-mode "<style[^>]*>" "</style>"))) 
(setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5")) 
(multi-web-global-mode 1) 

Больше на нескольких нескольких режимах Emacs в (вздохнув) здесь:

http://www.emacswiki.org/emacs/MultipleModes

UPDATE: упростила регэкспы к обнаруживать области JavaScript или CSS, чтобы заставить их работать с HTML5 - нет необходимости в сверхточных и хрупких регулярных выражениях.

31

Я написал основной режим web-mode.el для такого использования: редактирование HTML-шаблонов, встраивающих JS, CSS, Java (JSP), PHP. Вы можете скачать его на http://web-mode.org Web-mode.el делает подсветку синтаксиса и отступы в соответствии с типом блока. Установка проста:

(require 'web-mode) 
(add-to-list 'auto-mode-alist '("\\.html$" . web-mode)) 
Смежные вопросы