2010-12-16 8 views
90

Rozpocząłem bolesne pierwsze kroki przy użyciu emacsa do edycji pliku HTML za pomocą tagów HTML i zawartości javascript. Zainstalowałem nxhtml i próbowałem go użyć - tj. Skonfigurowałem tryb nxhtml-mumamo dla plików .html. Ale nie kocham tego. Kiedy edytuję fragment kodu JavaScript w kodzie, wcięcia na kartach nie zachowują się tak jak podczas edycji kodu C/C++. Zaczyna wstawiać tabulacje do linii, a jeśli spróbujesz trafić kartę w białym polu poprzedzającym linię, wstawia ona zakładkę zamiast zmieniać tabulację linii.Jak skonfigurować emacs do edycji plików HTML zawierających JavaScript?

Innym aspektem, który mi się nie podoba, jest to, że nie robi on kolorowania składni jak zwykłe tryby C/C++. Wolę zachowanie domyślnego trybu java podczas edycji plików HTML, ale to nie jest ładnie z kodem HTML. :-(

1) Czy istnieje lepszy tryb edycji plików HTML z fragmentami JavaScript?

2) Czy istnieje sposób na uzyskanie nxhtml do używania domyślnego trybu java dla części javascript?

Pozdrawiam,

M

+0

używam MMM-mode, który robi to w teorii, ale to trochę sucky, nie jestem aż tak zadowolony z niego. Wkleiłem wiele plików do mojego configu z emacswiki, ale tak naprawdę nie spędziłem wielu tygodni na tym. Szkoda, że ​​nie było prostsze dla tych z nas, którzy są bardziej zainteresowani używanie emacs niż konfigurowanie go. – Nathan

+1

Domyślam się, że obejściem problemu jest tworzenie dwóch plików i odwoływanie się do pliku javascript za pomocą '

6

Nie bardzo dobrym rozwiązaniem, ale szybkie ustalenie, czy naprawdę trzeba mieć JavaScript w HTML jest, aby wybrać obszar zawierający javascript i użyj polecenia narrow-to-region (C-x n n), a następnie przejść do preferowanej javascript tryb. Polecenie widen przywraca().

0

Wygląda na to, że źle skonfigurowałeś nxhtml. Jedyną konieczną konfiguracją powinno być ładowanie pliku autostart.el, a następnie wszystko powinno działać na pewnym poziomie. nxhtml nie jest w żaden sposób doskonały, ale moje doświadczenia z używania go dla html/css/javascript/mako są całkiem dobre, przynajmniej dla wszystkiego oprócz mako. Ale jestem pewien, że spieprzyłem z mako-częścią.

ten sposób zainicjować mój 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

Innym rozwiązaniem jest multi-web-mode:

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

które mogą być łatwiej konfigurowalne niż wspomniany już multi-mode.

Wystarczy skonfigurować preferowane tryby w pliku .emacs jak ten:

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

Więcej na wielu różnych trybach Emacs'S (westchnienie) tutaj:

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

UPDATE: uprościł wyrażeń regularnych do wykryj obszary JavaScript lub CSS, aby działały z HTML5 - nie ma potrzeby stosowania super precyzyjnych i delikatnych wyrażeń regularnych.

+3

Wypróbowałem i pokochałem, dzięki! –

+0

Działa naprawdę dobrze dla mojej prostej edycji html/javascript. –

+0

Miałem problemy łącząc je z flymake – juanmirocks

31

Napisałem główny tryb web-mode.el dla tego rodzaju użytkowania: edycja szablonów HTML, które osadzają JS, CSS, Java (JSP), PHP. Można go pobrać pod adresem http://web-mode.org Web-mode.el: podświetlanie składni i wcięcie zgodnie z typem bloku. Instalacja jest prosta:

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

tryb sieciowy jest również dostępny jako pakiet. Przynajmniej od MELPA. – mcginniwa

+0

Ma obsługę gier/maszynki do golenia! – juanmirocks

+0

Cześć fxbois, dlaczego to nie działa dla mnie? Skopiowałem web-mode.el do/use/local/share/emacs/site-lisp/(i usunąłem wszystkie inne pliki .el) i podążałem za sekcją "Install" na web-mode.org (i tylko plik .emacs ma te kilka linii). Czy możesz mi pomóc? Dzięki. –

Powiązane problemy