2010-12-16 56 views
90

Comencé los dolorosos primeros pasos de usar emacs para editar un archivo HTML con etiquetas HTML y contenido de JavaScript. He instalado nxhtml y he intentado usarlo, es decir, configurado para usar nxhtml-mumamo-mode para archivos .html. Pero no lo estoy amando Cuando estoy editando la parte de JavaScript del código, las sangrías de las pestañas no se comportan como lo hacen cuando editan el código C/C++. Comienza a colocar pestañas dentro de la línea y si intenta presionar la pestaña en el espacio en blanco que precede a una línea, inserta la pestaña en lugar de volver a tabular la línea.¿Cómo configuro emacs para editar archivos HTML que contienen Javascript?

Otro aspecto que no me gusta es que no hace coloreado de sintaxis como el C habitual/C++ modos de hacer. Prefiero el comportamiento del modo java predeterminado al editar archivos HTML, pero eso no funciona muy bien con el código HTML. :-(

1) ¿Hay una mejor modo para editar archivos HTML con porciones de Javascript?

2) ¿Hay una manera de conseguir nxhtml para utilizar el java-modo por defecto para las porciones de javascript?

Saludos,

M

+0

lo uso MMM-modo, que en teoría hace esto, sino que es un poco fastidioso, no estoy realmente tan contento con él. He pegado un montón de lisp en mi configuración de emacswiki, pero en realidad no me pasé semanas. Desearía que fuera más simple para aquellos de nosotros que estamos más interesados ​​en usar emacs que en configurarlo. – Nathan

+1

Supongo que una solución alternativa es crear dos archivos y hacer referencia al archivo javascript con un '

6

No es realmente una buena solución, pero una solución rápida si usted realmente necesita tener Javascript en su html es seleccionar la región que contiene javascript y utilizar el comando narrow-to-region (C-x n n) y luego cambiar a su Javascript preferido modo. El comando widen lo trae de vuelta, (C-x n w).

0

suena como usted tiene la configuración de su nxhtml incorrectamente. La única configuración necesaria debe ser cargar el archivo autostart.el y todo debería funcionar a algún nivel. nxhtml no es perfecto de ninguna manera, pero mis experiencias al usarlo para html/css/javascript/mako son bastante buenas, al menos para todo menos para mako. Pero estoy bastante seguro de haber arruinado la parte de mako.

Éste es cómo inicializar mi 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

Otra solución es multi-web-mode:

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

que puede ser más fácil de configurar que la ya mencionada multi-mode.

Sólo se debe configurar sus modos preferidos en su archivo .emacs así:

(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) 

Más en múltiples modos de Emacs múltiples (suspiro) aquí:

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

ACTUALIZACIÓN: simplificar las expresiones regulares a detectar áreas JavaScript o CSS para que funcionen con HTML5, sin necesidad de expresiones regulares súper precisas y frágiles.

+3

¡Lo probé y lo amo, gracias! –

+0

Funciona muy bien para mi edición simple de html/javascript. –

+0

Tuve problemas para combinarlo con flymake – juanmirocks

31

He escrito el modo principal web-mode.el para este tipo de uso: edición de plantillas HTML que incorporan JS, CSS, Java (JSP), PHP. Puede descargarlo en http://web-mode.org Web-mode.el resalta la sintaxis y la sangría de acuerdo con el tipo del bloque. La instalación es sencilla:

(require 'web-mode) 
(add-to-list 'auto-mode-alist '("\\.html$" . web-mode)) 
+0

web-mode también está disponible como un paquete. Al menos desde MELPA. – mcginniwa

+0

¡Tiene soporte para motor de juego/cuchillas de afeitar! – juanmirocks

+0

Hola fxbois, ¿por qué esto no funciona para mí? Copié web-mode.el en/use/local/share/emacs/site-lisp/(y eliminé todos los demás archivos .el), y seguí la sección "Instalar" en web-mode.org (y archivo .emacs solamente) tiene esas pocas líneas). ¿Puedes ayudarme? Gracias. –

Cuestiones relacionadas