सूचना प्रदर्शित करने के लिए एक खाली इको क्षेत्र का उपयोग करें


10

इको क्षेत्र ज्यादातर समय खाली होता है, जो मुझे लगता है कि मैं इसका उपयोग कुछ जानकारी प्रदर्शित करने के लिए कर सकता हूं। उदाहरण के लिए, org-clockमौजूदा कार्य, शेष समय और मॉडललाइन पर कुल बीता समय प्रदर्शित करता है। यह जानकारी वास्तव में पढ़ने योग्य नहीं है (मॉडलाइन कम हो सकती है), प्रत्येक मॉडलाइन पर दोहराया जाता है (क्योंकि यह पूरे ईमैक सत्र पर लागू होता है), और यह उपयोगी नहीं है कि मैं इसके लिए कुछ कीमती मॉडल की जगह का त्याग करने को तैयार हूं । दूसरी ओर, यह इको क्षेत्र में दिखाई दे सकता है जब यहां प्रदर्शित करने के लिए और कुछ नहीं है।

क्या इसे प्राप्त करने का एक विहित तरीका है? मैंने एक इन्सर्ट फंक्शन को हैक करने के बारे में सोचा है minibuffer-inactive-mode-hook(लेकिन यह मज़बूती से काम नहीं करता है, उदाहरण के लिए जैसे ही इको एरिया फिर से इस्तेमाल होता है मैसेज गायब हो जाता है), या नॉन-लॉगेड मैसेज को स्पैम करना (लेकिन यह अन्य उपयोगों के साथ गड़बड़ होगा) इको क्षेत्र और मिनीबार)।

इसका एक खराब-मैन संस्करण निष्क्रिय टाइमर का उपयोग करेगा, लेकिन ईको क्षेत्र खाली होने के बिना खाली हो सकता है (उदाहरण के लिए कुछ पाठ इनपुट करते समय)।


1
प्रदर्शित इको क्षेत्र `* इको एरिया 0 *` या `* इको एरिया 1 *` की सामग्री है और ये "सामान्य" बफ़र्स हैं। यह Emacs को पैच करने के लिए पॉसिबल होना चाहिए ताकि जब भी इन बफ़र्स को "फ्लश" (या प्रदर्शित और खाली) किया जाए तो एक हुक रन प्रदान किया जा सके, ताकि इस कार्यक्षमता को कुशलतापूर्वक और मज़बूती से लागू किया जा सके।
स्टीफन

यह वास्तव में आपके दिमाग में नहीं है, लेकिन बैस्टियन गुएरी ने स्क्रीन एस्टेट को बचाने के लिए कुछ दिलचस्प चीजें कीं, विशेष रूप से फ्रेम शीर्षक में मोड लाइन प्रदर्शित करने के साथ: bzg.fr/emacs-strip-tease.html
Dieter.Wilhelp

जवाबों:


4

इस प्रश्न पर एक टिप्पणी में उल्लेख किया गया है कि सिमोन नामक पैकेज ऐसी सुविधा का उपयोग करता है।

यह गैर-लॉग किए गए संदेशों को स्पैमिंग द्वारा प्राप्त किया जाता है, जब मिनीबर्फर निष्क्रिय होता है, और हर बार एक आदेश जारी करने के बाद रिडीप्ले को रोककर। उसके लिए बॉयलरप्लेट कम है, और उपयोग के कुछ ही मिनटों के बाद, मैं इसके साथ किसी भी समस्या को नोटिस नहीं कर सका: संदेश और मिनीबफ़र उपयोग अभी भी संदेशों पर प्राथमिकता लेते हैं।

प्रमुख घटक हैं:

  • एक डिस्प्ले फ़ंक्शन, एक निष्क्रिय टाइमर पर चलता है ( message-log-maxसेट के साथ संदेश कॉल करता है nil, ताकि प्रदर्शित स्ट्रिंग *Messages*बफर में न मिले )
  • एक रेडिसप्ले फ़ंक्शन, एक टाइमर पर चलता है
  • एक समारोह प्रदर्शन को रोकने के लिए, में चलाएँ pre-command-hook

एकमात्र मुद्दा यह है कि जब भी कोई कमांड चलाया जा रहा है, तो प्रदर्शन बंद हो जाता है, जिसमें टाइप करते समय शामिल होता है।

रुचि रखने वालों के लिए, मैंने संबंधित कोड को बायथलेट पैकेज में गिथब पर उपलब्ध कराया है ।


1

जवाब, आईएमओ, नहीं है । इको क्षेत्र अल्पकालिक संदेशों के लिए है । और बहुत सी चीजें स्पष्ट रूप से किसी भी चीज को मिटा देती हैं जो शायद वहां गूँजती हों। तो यह एहसास करना कि आप किसी भी उचित तरीके से क्या अनुरोध करते हैं, समस्याग्रस्त है, IMO।

संक्षेप में, एक विकल्प का उपयोग करें। यहाँ कुछ हैं:

  1. कुछ अन्य बफ़र का उपयोग करें (उदाहरण के लिए एक छोटा फ्रेम या विंडो जिसे आप इस उद्देश्य के लिए खुला रखते हैं)। करने के लिए सरल है, आप इसे चारों ओर ले जा सकते हैं, इसे संपादित कर सकते हैं, इसे मिटा सकते हैं, या जो कुछ भी आप इसे पसंद करते हैं उसे कर सकते हैं।

  2. भाग लाइन या सभी का उपयोग करें (जिसे आपने पहले ही माना है, जाहिरा तौर पर)।

  3. हेडर लाइन का उपयोग करें।

  4. एक फ्रेम शीर्षक का उपयोग करें।

अगर यह मैं होता तो मैं शायद # 1 का विकल्प चुनता। (लेकिन मुझे वास्तव में स्थिति जानकारी के ऐसे पूर्णकालिक प्रदर्शन की आवश्यकता / आवश्यकता नहीं है। मैं संभवतः एक कमांड को परिभाषित करूंगा जो मुझे मांग पर जानकारी (यहां तक ​​कि एक इतिहास / लॉग) दिखाता है।)


आपकी टिप्पणियों के बाद अपडेट किया गया:

आपने पहले ही अपने प्रश्न में कहा था, " जैसे ही गूंज क्षेत्र फिर से उपयोग किया जाता है, संदेश गायब हो जाता है "। तो ऐसा लग रहा था कि इस तरह के एक पंचांग का उपयोग करने से गूंज क्षेत्र आपकी आवश्यकताओं के अनुरूप नहीं होगा। आपकी टिप्पणी के जवाब में यह विरोधाभास लगता है।

यदि आप वास्तव में इको क्षेत्र का उपयोग करना चाहते हैं, तो minibuffer-inactive-mode-hook, जैसा कि आपने उल्लेख किया है, का उपयोग करें, या कॉल messageकरने के लिए या किसी अन्य तरीके से इको क्षेत्र में समय संदेश सम्मिलित करने के लिए टाइमर का उपयोग करें । हालाँकि, आपने पहले ही समस्याओं को नोट कर लिया है। उन समस्याओं (अधिलेखित, मिटना) गूंज क्षेत्र के ( इच्छित ) पंचांग प्रकृति से पालन करते हैं

संक्षेप में, आप पंचाट संदेशों के लिए इच्छित क्षेत्र का उपयोग करना चाहते हैं, लेकिन आप नहीं चाहते कि आपके संदेश उस क्षेत्र के फिर से उपयोग होते ही गायब हो जाएं।

(बीटीडब्ल्यू - अपना उल्लेख लिखिए कि मोड-लाइन की जानकारी हर मोड लाइन में दोहराई जाती है: ऐसा होने की आवश्यकता नहीं है। आप मोड लाइन को किसी विशेष बफर आदि के लिए विशिष्ट बना सकते हैं। IOW, आप हमेशा एक मोड लाइन चुन सकते हैं। (या समय-समय पर) अपनी घड़ी दिखाएं या जो भी हो।)


आपके सुझावों के लिए धन्यवाद! सबसे पहले, हालांकि, मुझे समझ में नहीं आता है, कि समस्याग्रस्त क्यों है? मैं उन चीजों को पसंद करूंगा जो गूंज क्षेत्र के ए टी एम क्षेत्र में जा सकते हैं, इको क्षेत्र के किसी अन्य उपयोग को ओवरराइड करने के लिए, इसलिए इसे ठीक करना ठीक है। और अतिरिक्त जानकारी केवल तब दिखाई जानी चाहिए जब इको क्षेत्र खाली हो, इसलिए मिटाने के लिए कुछ भी नहीं है। क्या यह उचित विनिर्देश की तरह नहीं है? # 1 के बारे में, समस्या यह है कि मैं स्क्रीन स्पेस बर्बाद नहीं करना चाहता। इको एरिया हमेशा खाली रहने पर भी रहता है। मैंने कुछ समस्याओं को # 2, और # 3 और # 4 के साथ सूचीबद्ध किया था, इनमें से बहुत सी समस्याएं हैं।
टी। वेरॉन

इस बारे में कि मुझे जानकारी का पूर्णकालिक प्रदर्शन क्यों चाहिए, उदाहरण के org-clockलिए प्रश्न से उदाहरण लें: मैं चाहता हूं कि टाइमर मुझे यह याद दिलाने के लिए नीचे टिक जाए कि मुझे क्या करना चाहिए, और मुझे लगता है कि मैं अभी कर रहा हूं , जैसा कि जितनी बार संभव हो।
टी। वेरॉन

"संदेश गायब हो जाता है जैसे ही प्रतिध्वनि क्षेत्र का फिर से उपयोग किया जाता है" ठीक है जो अस्पष्ट था। मेरा मतलब यह था कि अगर मैं minibuffer-inactive-mode-hookमिनीबार का उपयोग करता हूं और बाहर निकलता हूं, तो संदेश दिखाता है। फिर अगर कोई अन्य कमांड इको क्षेत्र में कुछ प्रिंट करता है, तो यह नया संदेश जोड़ा जाता है, और अल्पकालिक संदेश वापस नहीं आता है (क्योंकि मिनीबफ़र इस बार शामिल नहीं हुआ था)।
टी। वेरॉन

मॉडलाइन के बारे में, मुख्य समस्या वहां उपलब्ध छोटी जगह है (मेरे पास अक्सर बहुत सारी खिड़कियां होती हैं, क्षैतिज रूप से विभाजित होती हैं, इसलिए बहुत कम मॉडल होते हैं)।
टी। वेरॉन

फिर से - " संक्षेप में, आप एक क्षेत्र अल्पकालिक संदेशों के इरादे से उपयोग करना चाहते हैं, लेकिन आप के रूप में उस क्षेत्र फिर से प्रयोग किया जाता है अपने संदेशों करते ही गायब नहीं करना चाहते हैं। साथ एक टाइमर" का प्रयोग करें messageया post-command-hook, आप की तरह है। लेकिन गायब / अधिलेखित करने की आवश्यक समस्या कभी-कभी इसके सिर को पीछे कर देगी, क्योंकि आप कुछ के लिए एक अस्थायी प्रदर्शन क्षेत्र का उपयोग करने की कोशिश कर रहे हैं, जिसे आप अस्थायी नहीं करना चाहते हैं।
ड्रू
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.