मैंने इसे आपके लिए लिखा है; यह पूरी तरह से परीक्षण नहीं था, लेकिन ऐसा लगता है कि आप क्या चाहते हैं।
इसके पीछे तर्क टेक्स्ट में प्रत्येक वर्ण पर लूप करना है। यदि चरित्र डाउनकेस में वर्ण के बराबर है, तो इसे अपकेस में रिटर्न स्ट्रिंग में जोड़ें। यदि नहीं, तो इसे डाउनकेस में संलग्न करें। अंत में, क्षेत्र हटाएं और वापसी स्ट्रिंग डालें।
यह टेक्स्ट के एक पृष्ठ पर तुरंत काम करता है, हालांकि मैं इसे बड़े ग्रंथों पर उपयोग करने के लिए सावधान रहूंगा (अभी भी ठीक होना चाहिए)।
(defun toggle-case()
(interactive)
(when (region-active-p)
(let ((i 0)
(return-string "")
(input (buffer-substring-no-properties (region-beginning) (region-end))))
(while (< i (- (region-end) (region-beginning)))
(let ((current-char (substring input i (+ i 1))))
(if (string= (substring input i (+ i 1)) (downcase (substring input i (+ i 1))))
(setq return-string
(concat return-string (upcase (substring input i (+ i 1)))))
(setq return-string
(concat return-string (downcase (substring input i (+ i 1)))))))
(setq i (+ i 1)))
(delete-region (region-beginning) (region-end))
(insert return-string))))
ऐसा लगता है कि कई प्रयास किए गए उत्तरों वास्तव में आप जो पूछ रहे हैं उसके लिए उपयोग केस देखने में विफल रहते हैं, इसलिए वे इसके बजाय एक अलग समस्या हल करते हैं। क्या आप समझा सकते हैं कि यह उपयोगी होगा, अगर केवल हमारे मनोरंजन के लिए? – tripleee
यह बहुत आम नहीं हो सकता है, लेकिन मैंने गलती से मामले को स्विच किया (टर्मिनलों और व्याकरण फ़ाइल में गैर-टर्मिनलों) और सोचा कि उन्हें उलटाने के लिए एक आदेश हो सकता है। शायद मार्कअप और मूल्यों और इसी तरह के मामलों के साथ हो सकता है। मैं अब सोच रहा हूं कि ऐसा आदेश था, तो इसका उपयोग अपकेस और डाउनकेस दोनों के लिए किया जा सकता था। –