मैं HTML फ़ाइलों के संपादन के लिए emacs को कैसे कॉन्फ़िगर करूं जिसमें जावास्क्रिप्ट शामिल हो?


94

मैंने HTML टैग और जावास्क्रिप्ट सामग्री दोनों के साथ HTML फ़ाइल को संपादित करने के लिए emacs का उपयोग करने के दर्दनाक पहले चरण की शुरुआत की है। मैंने nxhtml स्थापित किया है और इसका उपयोग करने की कोशिश की है - यानी .html फ़ाइलों के लिए nxhtml-mumamo-mode का उपयोग करने के लिए सेट किया गया है। लेकिन मैं इसे प्यार नहीं कर रहा हूं। जब मैं कोड के जावास्क्रिप्ट हिस्से को संपादित कर रहा होता हूं तो टैब इंडेंट सी / सी ++ कोड को संपादित करते समय व्यवहार नहीं करते हैं। यह लाइन के भीतर टैब लगाना शुरू कर देता है और यदि आप कोशिश करते हैं और व्हाइट स्पेस में टैब को लाइन से पहले हिट करते हैं तो यह लाइन को फिर से टैब करने के बजाय टैब को सम्मिलित करता है।

एक और पहलू जो मुझे पसंद नहीं है वह यह है कि यह सामान्य सी / सी ++ मोड की तरह सिंटैक्स रंगाई नहीं करता है। मैं HTML फ़ाइलों को संपादित करते समय डिफ़ॉल्ट जावा मोड के व्यवहार को बहुत पसंद करता हूं, लेकिन यह HTML कोड के साथ अच्छी तरह से नहीं खेलता है। :-(

1) जावास्क्रिप्ट फ़ाइलों के साथ HTML फ़ाइलों को संपादित करने के लिए एक बेहतर मोड है?

2) क्या जावास्क्रिप्ट स्क्रिप्ट के लिए डिफ़ॉल्ट जावा मोड का उपयोग करने के लिए nxhtml प्राप्त करने का एक तरीका है?

सादर,


मैं MMM- मोड का उपयोग करता हूं, जो सिद्धांत रूप में ऐसा करता है, लेकिन यह एक प्रकार का चूना है, मैं वास्तव में इससे खुश नहीं हूं। मैं अपने विन्यास में बहुत से लिस्प को इमैक्सिविकी से चिपकाता हूं लेकिन वास्तव में इस पर सप्ताह नहीं बिताता। मैं चाहता हूं कि यह उन लोगों के लिए सरल हो जो इसे कॉन्फ़िगर करने की तुलना में emacs का उपयोग करने में अधिक रुचि रखते हैं।
नाथन

1
मुझे लगता है कि एक वर्कअराउंड दो फाइलें बना रहा है और जावास्क्रिप्ट फाइल को संदर्भित करता है a <script src>। आप उन दोनों को थोड़ा सा देख सकते हैं C-x 2या C-x 3उनमें से प्रत्येक के लिए एक विधा हो सकती है। : - /
पैट्रिक

जवाबों:


41

एक और उपाय है 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 के कई मल्टीपल मोड (sigh) पर अधिक:

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

अद्यतन करें: HTML5 के साथ काम करने के लिए जावास्क्रिप्ट या सीएसएस क्षेत्रों का पता लगाने के लिए regexps को सरल बनाया - सुपर-सटीक और नाजुक नियमित अभिव्यक्तियों की कोई आवश्यकता नहीं है।


मुझे इसे फ्लाईमेक के साथ संयोजित करने में परेशानी हुई
juanmirocks

html5 जैसे अधिक मामलों को संभालने के लिए, मैं अब जावास्क्रिप्ट और सीएसएस के लिए सरल और अधिक क्षमा करने वाले टैग विवरणों का उपयोग करता हूं:(js-mode "<script[^>]*>" "</script>") (css-mode "<style[^>]*>" "</style>")
काई कार्वर

32

मैंने इस तरह के उपयोग के लिए प्रमुख मोड वेब-मोड.एल लिखा है: जेएसएम, सीएसएस, जावा (जेएसपी), पीएचपी को एम्बेड करने वाले HTML टेम्प्लेट को संपादित करना। आप इसे http://web-mode.org वेब-मोड पर डाउनलोड कर सकते हैं । यह ब्लॉक के प्रकार के अनुसार सिंटैक्स हाइलाइटिंग और इंडेंटेशन करता है। स्थापना सरल है:

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

1
वेब-मोड पैकेज के रूप में भी उपलब्ध है। कम से कम MELPA से।
mcginniwa

खेलने / रेजर इंजन का समर्थन है!
जुआनमारॉक्स

हाय fxbois, मेरे लिए यह काम क्यों नहीं करता है? मैंने web-mode.el को / उपयोग / स्थानीय / साझा / emacs / साइट-लिस्प / (और अन्य सभी .el फ़ाइलों को हटा दिया) में कॉपी किया, और web-mode.org (और .emacs) फ़ाइल में "इंस्टॉल" अनुभाग का पालन किया। उन कुछ पंक्तियाँ हैं)। क्या आप मदद कर सकते हैं? धन्यवाद।
टोनी जू

1
क्या आप emacs के अंदर और Mx वेब-मोड के बाद we-mode.el फ़ाइल लोड कर सकते हैं
fxbois

14

बड़ा सवाल है। देखो कि आप अपने पहले एक पर कितने उत्थान पाए!

सभी को आपके जैसा ही अनुभव है। मैं भी।

Nhtml-mode पर भरोसा करने के बजाय जो मेरे लिए उसी तरह की विचित्रता का प्रदर्शन करता है जैसा आपने बताया, मैंने एक और विकल्प की तलाश की और पाया बहु-मोड ।el । यह एक तरह का सामान्य प्रयोजन वाला मल्टी-मोड कंकाल है। इसका उपयोग करने के लिए, आपको यह बताने के लिए नियमित अभिव्यक्ति निर्दिष्ट करने की आवश्यकता है कि एक मोड कहाँ शुरू होता है और दूसरा समाप्त होता है। तो, आप <script...>एक जावास्क्रिप्ट ब्लॉक <style...>शुरू करने के लिए , और एक सीएसएस ब्लॉक शुरू करने के लिए देखें। फिर आप प्रत्येक ब्लॉक के लिए अपने स्वयं के मोड में प्लग करते हैं - यदि आपको जावास्क्रिप्ट के लिए एस्प्रेसो पसंद है, तो इसका उपयोग करें। और इसलिए अन्य खंडों के लिए जो अन्य ब्लॉकों की पहचान करते हैं।

व्यवहार में, जैसा कि आप दस्तावेज़ के माध्यम से नेविगेट करते हैं, प्रत्येक ब्लॉक के लिए एक अलग मोड सक्षम होता है।

मैंने ASP.NET का उत्पादन करने के लिए मल्टी-मोड का उपयोग किया, जिससे मुझे C #, HTML, CSS और जावास्क्रिप्ट को एक ही फाइल में एडिट करने की सुविधा मिलती है, जहाँ कर्सर बफर में होता है, उसके आधार पर उचित हाइलाइटिंग और फॉन्टिफिकेशन के साथ। यह सही नहीं है, लेकिन मैंने इसे मौजूदा संभावनाओं पर एक सुधार के रूप में पाया। वास्तव में यह वही हो सकता है जो आप चाहते हैं। कोशिश करके देखो।

https://code.google.com/p/csharpmode/source/browse/trunk/aspx-mode.el?r=14


मैं बस aspx मोड बाहर की कोशिश करने के लिए चारों ओर हो गया। इसने बहुत अच्छा काम किया। केवल एक चीज मैंने एक्सप्रेस-मोड से जावास्क्रिप्ट समर्थन को जावास्क्रिप्ट-मोड में बदल दिया था।
मेकडमी

7

वास्तव में एक अच्छा समाधान नहीं है लेकिन एक त्वरित समाधान है अगर आपको वास्तव में अपने html में जावास्क्रिप्ट की आवश्यकता है, तो जावास्क्रिप्ट युक्त क्षेत्र का चयन करें और कमांड का उपयोग करें narrow-to-region( C-x n n) और फिर अपने पसंदीदा जावास्क्रिप्ट मोड पर स्विच करें। कमांड widenआपको वापस लाता है ( C-x n w)।


0

ऐसा लगता है कि आपने अपना nxhtml गलत तरीके से सेटअप किया है। केवल आवश्यक सेटअप autostart.elफ़ाइल लोड किया जाना चाहिए , और फिर सब कुछ कुछ स्तर पर काम करना चाहिए। nxhtml किसी भी तरह से परिपूर्ण नहीं है, लेकिन html / css / javascript / mako के लिए इसका उपयोग करने से मेरे अनुभव बहुत अच्छे हैं, कम से कम सब कुछ लेकिन mako के लिए। लेकिन मुझे पूरा यकीन है कि मैंने mako-part के साथ पंगा ले लिया है।

यह है कि मैं अपने 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))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.