स्वचालित रूप से स्मार्ट उद्धरण हटाना


19

खासकर जब Google डॉक्स जैसी चीजों से टेक्स्ट कॉपी करते हैं, तो मैं Emacs को स्मार्ट डबल कोट्स, स्मार्ट सिंगल कोट्स और एम-डैश और एन-डैश पात्रों के सभी तरीकों को स्वचालित रूप से हटाने के लिए चाहूंगा, उन्हें उनके एएससीआई समकक्षों के साथ बदल दें।

वहाँ Emacs को स्वचालित रूप से करने के लिए कॉन्फ़िगर करने का एक तरीका है? या, इसे रोकते हुए, एक फ़ंक्शन जिसे मैं कॉल कर सकता हूं वह इसे बफर या क्षेत्र पर करेगा?


1
मुझे यह विचार पसंद है। अतीत में मैं का उपयोग किया है (occur "[^[:ascii:]]")मैनुअल सफाई के लिए एक बफर में गैर- ASCII वर्ण को खोजने के लिए, लेकिन अपने आप आम लोगों की जगह बहुत अच्छा होगा।
ग्लूकोज

क्या ऐसा कहीं भी है जो सभी 'स्मार्ट' वर्णों और उनके अस्सी समकक्षों को सूचीबद्ध कर सकता है?
जोनाथन लीच-पेपिन

जवाबों:


16

SU के आधार पर : कॉपी पेस्ट में स्मार्ट कोट्स को कैसे हटाएं

आप कुछ इस तरह की कोशिश कर सकते हैं:

(defcustom smart-to-ascii '(("\x201C" . "\"")
                ("\x201D" . "\"")
                ("\x2018" . "'")
                            ("\x2019" . "'")
                            ;; en-dash
                            ("\x2013" . "-")
                            ;; em-dash
                            ("\x2014" . "-"))
  ""
  :type '(repeat (cons (string :tag "Smart Character  ")
                       (string :tag "Ascii Replacement"))))

(defun replace-smart-to-ascii (beg end)
  (interactive "r")
  (format-replace-strings smart-to-ascii
                          nil beg end))

जो कुछ भी वांछित है, उसे जोड़ने के लिए वर्णों को जोड़ने / समायोजित करने की अनुमति देने के लिए इसे एक डिफीक्यूट के रूप में उपयोग करना।


यह वास्तव में एक पूर्ण समाधान नहीं होगा, यूनिकोड उद्धरण और पानी का छींटा की तरह-पात्रों के विभिन्न प्रकार (जैसे नॉन-ब्रेकिंग हाइफ़न \ u2011) और वे सब कभी-कभी दिखाई देते हैं के लिए प्रत्येक कई प्रतीक हैं। मैं भी यकीन है कि अगर एक विस्तृत सूची संपूर्ण से अधिक समय रहने के रूप में यूनिकोड बढ़ता है नहीं कर रहा हूँ।
Peteris

1
यह मानते हुए कि सूची चालू रखा गया था (जैसे की एक सूची / संदर्भ की आवश्यकता होगी) यह लंबे समय में काम करेगा @Peteris। मेरे चयन उन है कि ली एच उल्लेख पर पूरी तरह से आधारित था। मैं, इस मामले में एक विस्तृत सूची बस एक प्रारंभिक बिंदु किसी भी अन्य है कि प्राप्त किए गए हैं फिट करने के लिए अनुकूलित किया जा सकता है कि उपलब्ध कराने की कोशिश नहीं कर रहा था।
जोनाथन जोंक-पेपिन

जगह जो कुछ पात्रों alist में परिभाषित कर रहे हैं के बाद, आप कह सकते हैं highlight-regexpइस क्षेत्र में किसी भी शेष गैर- ASCII वर्ण पर प्रकाश डाला।
glucas

8

@Jonathan ने जो पोस्ट किया है, उसे जोड़ने के लिए, आप ऐसा करके स्वचालित (ताकि यांकिंग उन वर्णों को पहले स्थान पर नहीं जोड़ सकें) बना सकते हैं:

(advice-add 'yank :after (lambda (&optional ignore)
                           (replace-smart-to-ascii (mark) (point)))
            '(name replace-smart))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.