2010-12-16 94 views
90

我已經開始使用emacs編輯HTML標籤和javascript內容的HTML文件的痛苦的第一步。我已經安裝了nxhtml並嘗試使用它 - 即設置爲使用nxhtml-mumamo模式.html文件。但我不喜歡它。當我編輯代碼的Javascript部分時,Tab縮進不像編輯C/C++代碼時那樣工作。它開始將製表符放入行中,如果嘗試在行之前的空白處點擊製表符,則會插入製表符而不是重新制錶行。如何配置emacs以編輯包含Javascript的HTML文件?

我不喜歡的另一個方面是它不像通常的C/C++模式那樣進行語法着色。在編輯HTML文件時,我更喜歡缺省java模式的行爲,但不能很好地與HTML代碼一起玩。 :-(

1)有沒有更好的方式來編輯HTML文件的JavaScript部分?

2)有沒有辦法讓nxhtml使用JavaScript部分的默認java模式?

問候,

中號

+0

我用MMM模式,這在理論上做到這一點,但它是一種蘇茨基,我不是真的與它是快樂的。我從emacswiki粘貼了很多lisp到我的配置文件中,但並沒有花費數週的時間。我希望對我們來說,使用emacs更感興趣而不是配置它。 – Nathan 2010-12-16 19:27:02

+1

我想一個解決方法是創建兩個文件,並用'

6

不是個很好的辦法,但速戰速決,如果你真的需要的JavaScript在HTML是選擇區域包含JavaScript和使用命令narrow-to-regionC-x n n),然後切換到您首選的JavaScript模式。命令widen帶你回來,(C-x n w)。

0

這聽起來像你已經錯誤地設置你的nxhtml。唯一必要的設置應該是加載autostart.el文件,然後一切都應該工作到一定程度。 nxhtml在任何方面都不是完美的,但我使用html/css/javascript/mako的經驗相當不錯,至少對於除mako以外的所有內容都是如此。但我很確定我已經搞砸了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一起工作 - 不需要超精確和易碎的正則表達式。

+3

嘗試過並喜歡它,謝謝! – 2012-09-10 19:25:28

+0

對我簡單的html/javascript編輯工作非常好。 – 2013-05-30 11:31:55

+0

我遇到了麻煩,將它與flymake – juanmirocks 2013-06-27 10:54:48

31

我已經編寫了這種用法的主要模式web-mode.el:編輯嵌入JS,CSS,Java(JSP),PHP的HTML模板。您可以下載它http://web-mode.org Web-mode.el根據塊的類型執行語法高亮和縮進。 安裝簡單:

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

網絡模式也可作爲一個包。至少從MELPA。 – mcginniwa 2013-04-28 21:59:25

+0

有玩/剃鬚刀引擎支持! – juanmirocks 2013-06-27 11:34:59

+0

嗨fxbois,爲什麼這不適合我?我將web-mode.el複製到/ use/local/share/emacs/site-lisp /(並刪除了所有其他.el文件),然後按照web-mode.org中的「Install」部分進行操作(僅限.emacs文件有幾條線)。你能幫忙嗎?謝謝。 – 2014-12-23 17:13:58