मैंने एक फंक्शन का एक कार्यशील उदाहरण दिया है जो एक स्ट्रिंग लेता है और बफर टेक्स्ट के बाद इसे टाइमआउट के साथ अस्थायी रूप से प्रदर्शित करता है:
(defun my-momentarily-display-after-buffer-end (string &optional timeout)
(let ((ov (make-overlay (point-max) (point-max))))
(overlay-put ov 'after-string
(concat (propertize " " 'display
'(space :align-to (+ left-fringe 10)))
(propertize string 'display
'(raise -1))
"\n\n"))
(sit-for (or timeout 5))
(delete-overlay ov)))
निम्नलिखित भस्म का परिणाम आपके निचले लाल बॉक्स उदाहरण में होगा:
(my-momentarily-display-after-buffer-end "Nothing to see here...")
इसका कारण यह है क्योंकि ओवरलेज़ मार्करों को बीच प्रदर्शित होने वाले पदों के रूप में उपयोग करते हैं। ओवरले की शुरुआत और अंत के रूप में सबसे बाहरी स्थिति का उपयोग करना आपको संपत्ति का उपयोग करके इसके बाद पाठ प्रदर्शित करने में सक्षम बनाता after-string
है। चूंकि ओवरले में उचित पाठ हो सकता है, इसलिए मैंने इसे इंडेंटेड और इसके चारों ओर व्हाट्सएप के साथ सेट करने के लिए सेट किया है।
अन्य उदाहरण पंक्ति के अंत के बाद पाठ प्रदर्शित करने के लिए एक ही विचार का उपयोग कर सकते हैं:
(defun my-momentarily-display-after-line-end (string &optional timeout)
(let ((ov (make-overlay (line-end-position) (line-end-position))))
(overlay-put
ov 'after-string
(concat (propertize " " 'display
`(space :align-to (- right-fringe
,(1+ (length string)))))
string))
(sit-for (or timeout 5))
(delete-overlay ov)))
निम्नलिखित मंगलाचरण आपके दाईं ओर लाल बॉक्स उदाहरण के रूप में होगा:
(my-momentarily-display-after-line-end "annotation")
आप बहुत अधिक पागल हो सकते हैं और बफर टेक्स्ट से इन ओवरले को अलग करने के लिए चेहरे जोड़ सकते हैं, उन्हें टाइमआउट की तुलना में अधिक समय तक प्रदर्शित कर सकते हैं, अपनी स्थिति को समायोजित कर सकते हैं, पता लगा सकते हैं कि कोई खाली जगह नहीं है और उचित टेक्स्ट के सामान्य ओवरले का उपयोग करें, आदि। कंपनी-मोड का स्रोत कोड
क्योंकि यह बहुत पठनीय है और सुझाए गए सुविधाओं के साथ एक लचीली पॉपअप मेनू बनाने के लिए ओवरले का अधिक विस्तृत (और ज्यादातर बगफ्री) उपयोग दर्शाता है।