अप्रत्यक्ष बफ़र्स का उपयोग करने के क्या लाभ हैं ? वे किन परिस्थितियों में उपयोगी हैं?
अप्रत्यक्ष बफ़र्स का उपयोग करने के क्या लाभ हैं ? वे किन परिस्थितियों में उपयोगी हैं?
जवाबों:
एक ही बफर के कई स्थानों को देखने और संपादित करने के लिए। इसलिए, आपको एक लंबे बफर को स्क्रॉल करने की आवश्यकता नहीं है, लेकिन बस विंडो को दृश्य क्षेत्र में स्विच करें। प्रत्येक क्लोन किए गए बफर में अलग-अलग मार्क रिंग, संकुचन और अन्य बफर गुण भी होते हैं। यदि आप अप्रत्यक्ष बफर का उपयोग नहीं करते हैं, लेकिन उसी बफर की एक और विंडो बनाते हैं, तो सब कुछ साझा किया जाता है और आप अन्य स्थानों को देखने और संपादित करने से परे अन्य अग्रिम विशेषताओं का प्रदर्शन नहीं कर सकते हैं। उदाहरण के लिए, एक अप्रत्यक्ष बफर के साथ, आप मूल बफ़र को प्रभावित किए बिना सभी कोड ब्लॉक को प्रभावी ढंग से "टैग ट्री" बना सकते हैं। एक विंडो का उपयोग करते हुए, दोनों विंडो में दोनों बफ़र्स को मोड़ दिया जाता है क्योंकि दोनों बफ़र समान हैं।
संक्षेप में, अप्रत्यक्ष बफर एक पूरी तरह से अलग बफर है जो आपके मूल बफर में एक ही टेक्स्ट और फ़ाइल को साझा करने के लिए होता है, इसलिए जब आप क्लोन बफर को सहेजते हैं, तो यह आपकी मूल फ़ाइल को भी बचाता है।
एक उपयोग मामला एक फ़ाइल के एक हिस्से पर एक अलग प्रमुख मोड का उपयोग कर रहा है।
उदाहरण के लिए, मैं एक बार कुछ तत्वों के अंदर कोड के साथ xml दस्तावेजों के साथ काम कर रहा था। मैं पूरे दस्तावेज़ को संपादित करने में सक्षम होना चाहता था जैसे कि यह xml था, लेकिन फिर भी प्रोग्रामिंग तत्वों के लिए सभी प्रमुख मोड सुविधाएँ कुछ तत्वों में एम्बेडेड हैं, इसलिए मैं उन तत्वों के शरीर को एक अप्रत्यक्ष बफर में चला रहा था जो कि चल रहे थे उपयुक्त प्रमुख मोड।
यहाँ मेरे विन्यास से एक फ़ंक्शन है जो मैं ऐसा करने के लिए उपयोग करता हूं:
(defun indirect-region (start end)
"Edit the current region in another indirect buffer.
Prompt for a major mode to activate."
(interactive "r")
(let ((buffer-name (generate-new-buffer-name "*indirect*"))
(mode (intern
(completing-read
"Mode: "
(mapcar (lambda (e)
(list (symbol-name e)))
(apropos-internal "-mode$" 'commandp))
nil t))))
(pop-to-buffer (make-indirect-buffer (current-buffer) buffer-name))
(funcall mode)
(narrow-to-region start end)
(goto-char (point-min))
(shrink-window-if-larger-than-buffer)))
नोट: यह सही नहीं है, फ़ॉन्ट-लॉक जैसी चीजों को इस परिदृश्य में उपयोग के लिए विशेष अतिरिक्त काम की आवश्यकता होती है।
अप्रत्यक्ष बफ़र्स आपको एक ही बफर के कई विचार देते हैं, विशेष रूप से, कई संकीर्णताएं, जिनमें से प्रत्येक एक अलग बफर की तरह, कई मामलों में कार्य करता है।
जैसा कि पुस्तकालय के लिए टीका narrow-indirect.el
कहता है:
आप जितना सोच सकते हैं उससे अधिक के लिए अप्रत्यक्ष बफ़र्स का उपयोग कर सकते हैं। आप एक निर्देशिका लिस्टिंग में उपयोगी (सक्रिय) विचार देने के लिए, उदाहरण के लिए, Dired बफ़र्स के भाग से लिए गए क्लोन का उपयोग कर सकते हैं। केवल कुछ कुंजियाँ / आदेश हैं (जैसे
g
कि सूची को अद्यतन करने के लिए) जो काम नहीं करते हैं, क्योंकि वे पूरे वायर्ड बफर के एक दृश्य पर निर्भर करते हैं। प्रयोग, और आपको कोई संदेह नहीं होगा कि अप्रत्यक्ष बफ़र्स के लिए दिलचस्प नए उपयोग मिलेंगे।