2010-01-16 20 views
11

के बीच Emacs के डिफ़ॉल्ट इंडेंटेशन को नहीं बदला जा सकता है मैं Emacs इंडेंटेशन प्रतिमान के बारे में उलझन में हूं।एचटीएमएल टैग

मैं अपने .emacs फ़ाइल में इस है:

(setq-default tab-width 4) 

अगर मैं निम्नलिखित स्थिति में टैब प्रेस

    <ul> 
(caret) 
        </ul> 

यह

    <ul> 
        (caret) 
        </ul> 

(2 के साथ इस रिक्त स्थान की तरह अंत एचटीएमएल टैग के बीच इंडेंटेशन।)

यह इस तरह खत्म करना चाहिए:

    <ul> 
         (caret) 
        </ul> 

मैं सब कुछ करने की कोशिश की:

(setq-default tab-width 4) 
(setq-default indent-tabs-mode t) 
(setq tab-stop-list '(4 8 12 16)) 

मैं हर संभव 4 खरोज के बारे में स्थापित करने Emacs निर्धारित किया है लेकिन यह है कि 2 अंतरिक्ष खरोज अभी भी वहाँ है।

कोई सुझाव?

+0

HTML संपादित करने के लिए आप किस मोड का उपयोग कर रहे हैं? –

+0

मुझे यकीन नहीं है। यह मुझे लगता है कि डिफ़ॉल्ट मोड है (मैंने सोचा था कि Emacs एचटीएमएल मोड में बदल जाता है जब यह .html एक्सटेंशन के साथ फ़ाइल खोलता है) – alexchenco

उत्तर

21

टैब चौड़ाई को सेट करना इस परिदृश्य में लागू नहीं है, लेकिन मैं आपके भ्रम को समझता हूं; Emacs कई टैब से संबंधित चर प्रदान करता है और एक विशेष परिदृश्य के लिए सही एक निर्धारित करने भ्रमित हो सकता है।

This EmacsWiki article provides more details about setting the indentation level for HTML; सामान्य रूप से, EmacsWiki Emacs युक्तियों के लिए एक महान संसाधन है।

इस विशिष्ट मामले में, आप Emacs 'मानक HTML मोड (html-mode, के रूप में sgml-mode द्वारा परिभाषित), चर है कि आप सेट करना चाहते हैं का उपयोग कर रहे के बाद से sgml-basic-offset है। 2 करने के लिए है कि चर चूक, लेकिन आप इसे 4 से इस प्रकार बदल सकते हैं:

(setq sgml-basic-offset 4) 

यह परिवर्तन केवल html-mode को विशिष्ट बनाने के लिए, आप निम्न कोड का उपयोग कर सकते हैं:

(add-hook 'html-mode-hook 
    (lambda() 
    ;; Default indentation is usually 2 spaces, changing to 4. 
    (set (make-local-variable 'sgml-basic-offset) 4))) 

यह सब मानता है कि आप Emacs 22 या बाद में उपयोग कर रहे हैं; यदि ऐसा नहीं है, तो EmacsWiki पृष्ठ जो मैंने लिंक किया है, में Emacs के पुराने संस्करणों के लिए एक समाधान है।

+0

यह धन्यवाद काम करता है! मैं उत्सुक हूं क्यों नहीं: (सेटक एचटीएमएल-मूल-ऑफ़सेट 4)? – alexchenco

+2

एचटीएमएल एसजीएमएल का व्युत्पन्न है। 'Html-mode' के लिए Emacs कार्यक्षमता सामान्य उद्देश्य वाले SGML पैकेज द्वारा प्रदान की जाती है, यही कारण है कि चर 'sgml-basic-offset' है। यही कारण है कि उस चर को 'html-mode-hook' में सेट करना बेहतर है; इस तरह, यह केवल HTML फ़ाइलों को प्रभावित करेगा, न कि सामान्य रूप से एसजीएमएल फाइलें। –

+0

यह इस बात पर निर्भर करेगा कि आप किस एचटीएमएल कोड को संपादित करने के लिए उपयोग कर रहे हैं। इस तरह के कोई वास्तविक * डिफ़ॉल्ट * नहीं है। –

संबंधित मुद्दे