2009-05-11 18 views
7

ग्रहण में, जावा कोड संपादित करना, अगर मैं खुले-पैर टाइप करता हूं, तो मुझे माता-पिता की एक जोड़ी मिलती है। अगर मैं दूसरे पैर के माध्यम से "टाइप" करता हूं, तो यह अतिरिक्त माता-पिता नहीं डालता है। मैं इसे emacs में कैसे प्राप्त करूं?Emacs टाइपओवर कंकाल-जोड़ी-सम्मिलित-शायद

ग्रहण संपादक यह जानकर काफी समझदार है कि जब मैं करीबी-माता-पिता टाइप करता हूं, तो मैं बस जो शुरू कर रहा हूं उसे पूरा कर रहा हूं। कर्सर करीबी माता पिता के पीछे आगे बढ़ता है। यदि मैं एक अर्धविराम टाइप करता हूं, वही बात: यह अर्धविराम से पहले ओवरराइट करता है, और मुझे उनमें से दो नहीं मिलते हैं।

emacs में, जावा मोड में, या csharp-mode में अगर मैं खुले-पैर को कंकाल-जोड़ी-सम्मिलित करने के लिए बांधता हूं-शायद, मुझे खुली नज़दीकी पैरेंट जोड़ी मिलती है, जो कि अच्छा है। लेकिन फिर अगर मैं करीबी माता-पिता को "टाइप" करता हूं, तो मुझे दो करीबी-माता-पिता मिलते हैं।

क्या एमएक्स को तुरंत पहले के कंकाल-जोड़ी-सम्मिलित होने के बाद करीबी माता-पिता को सम्मिलित करने का कोई तरीका नहीं है? और यदि यह संभव है, तो अर्धविराम को दोगुना करने से बचने के लिए कुछ समान बुद्धि के बारे में क्या?

मैं माता-पिता के बारे में पूछ रहा हूं, लेकिन यह डबल-कोट्स, घुंघराले ब्रेसिज़, स्क्वायर ब्रैकेट आदि पर लागू होता है। कंकाल-जोड़ी-सम्मिलित-शायद-साथ कुछ भी डाला जाता है।

उत्तर

4

This post दिखाता है कि आप क्या चाहते हैं। बोनस के रूप में यह भी दिखाता है कि इसे कैसे सेट अप करें ताकि यदि आप शुरुआती चार के तुरंत बाद बैकस्पेस कर लेंगे, तो यह कर्सर के बाद समापन char को भी हटा देगा।

अद्यतन:

जब से मैं इस उत्तर पोस्ट, मैं Autopair जो इस उपयोग के मामले के लिए एक काफी सही प्रणाली है की खोज की है। मैं इसका बहुत उपयोग कर रहा हूं और इसे प्यार करता हूं।

+0

सरल, आसान । बस मैं क्या चाहता था। – Cheeso

+0

autopair = सही। बस मैं क्या चाहता था। – yesudeep

1

मैं पेरेडिट-मोड का उपयोग करता हूं, जो यह करता है और बहुत कुछ करता है।

0

ParEdit लगता है जैसे कि यह चेतावनी है कि यह कॉमन लिस्प और योजना के लिए डिजाइन किया गया था के साथ, अपनी जरूरत के कोष्ठक हिस्सा संभाल होगा। Steve Yegge mentions JDEE for emacs Java development, लेकिन मैं व्यक्तिगत अनुभव से इसके लिए बात नहीं कर सकता, और मुझे संरचित संपादन के बारे में बात करने पर कोई दस्तावेज नहीं मिला।

2

मैंने जो किया है उसे सारांशित करने के लिए, मैंने इस पोस्ट को देखा, और जो मैंने उससे बाहर निकाला था उसे लिया। जो मैंने समाप्त किया वह सरल था, क्योंकि मेरे पास अतिरिक्त आवश्यकताएं नहीं थीं।

(defvar cheeso-skeleton-pair-alist 
    '((?\) . ?\() 
    (?\] . ?\[) 
    (?" . ?"))) 


(defun cheeso-skeleton-pair-end (arg) 
    "Skip the char if it is an ending, otherwise insert it." 
    (interactive "*p") 
    (let ((char last-command-char)) 
    (if (and (assq char cheeso-skeleton-pair-alist) 
      (eq char (following-char))) 
     (forward-char) 
     (self-insert-command (prefix-numeric-value arg))))) 

और फिर मेरी जावा-मोड हुक में, मैं बंद कोष्ठक और क्लोज ब्रैकेट इस तरह से बाध्य:

मैं इन दो नए परिभाषाएँ इस्तेमाल किया

(local-set-key (kbd ")") 'cheeso-skeleton-pair-end) 
(local-set-key (kbd "]") 'cheeso-skeleton-pair-end)