2011-10-31 16 views
5

लीजिए मैं इस कोड है:Emacs: कैसे स्वचालित रूप से सीसी मोड डेरिवेटिव में कोलन के बाद खाली स्थान शामिल करने

{ 
    "type" : "home", 
    "number":"212 555-1234" 
} 

मै अपने Emacs स्वचालित रूप से कुछ मोड में कोलन के बाद खाली स्थान शामिल करना चाहता हूँ। विशेष रूप से मैं सीसी-मोड के आधार पर जावास्क्रिप्ट-मोड का उपयोग कर रहा हूं। क्या यह मदद कर सकता है?

अग्रिम धन्यवाद।

उत्तर

4

यह करने के लिए कुछ इस तरह (अपने .emacs में) होगा सबसे आसान तरीका:

(defun my-js-hook() 
    (local-set-key ":" '(lambda() (interactive) (insert ": ")))) 

(add-hook 'js-mode-hook 'my-js-hook) 

अधिक परिष्कृत विकल्प yasnippet या skeleton mode शामिल हैं। वे शायद इस सरल के लिए अधिकतर हैं, लेकिन यदि आप अधिक परिष्कृत टेम्पलेटिंग चाहते हैं तो उपयोगी उपकरण हैं।

संपादित करें: मुझे किसी भी सीसी-मोड जादू से अवगत नहीं है जो टिप्पणियों के अंदर विभिन्न व्यवहार की अनुमति देता है। मैं सीसी-मोड का अधिक उपयोग नहीं करता, लेकिन मैनुअल में मुझे कुछ भी स्पष्ट नहीं दिख रहा है। यहां कुछ कोड है जो आप जो चाहते हैं वह कर सकते हैं:

(defun my-js-hook() 
    (local-set-key ":" 
      '(lambda() 
       (interactive) 
       (let ((in-comment-p)) 
        (save-excursion 
        (setq in-comment-p (comment-beginning))) 
        (if in-comment-p 
         (insert ":") 
        (insert ": ")))))) 
+0

रीप्ले के लिए धन्यवाद। यह अच्छा लग रहा है लेकिन टिप्पणियों के लिए भी व्यवहार को ओवरराइड करेगा। मैंने विशेष रूप से सीसी-मोड के बारे में पूछा क्योंकि मेरा मानना ​​है कि इसे कुछ सीसी-मोड जादू के साथ किया जा सकता है (मुझे विश्वास है कि उनके पास कुछ ऐसा है क्योंकि परियोजना 1992 से मौजूद है) –

+0

मैंने कुछ कोड जोड़ा जो आपके लिए समस्या को ठीक कर सकता है। – Tyler

+0

आपने मेरा दिन बनाया :-) ऐसा लगता है कि यह autoformat मामूली मोड से शुरू करने के लिए कुछ है =)। लेकिन मुझे यह लाइन समझ में नहीं आ रही है: (सेव-भ्रमण (सेटक इन-कमेंट-पी (टिप्पणी-शुरुआत)))। हम इसे क्यों शुरू नहीं कर सकते हैं? –