जो लोग नहीं जानते हैं, imenu emacs में एक चीज है जो एक मोड को मेनू बार में एक या अधिक मेनू आइटम डालने देती है। सबसे आम उपयोग एक ड्रॉप-डाउन मेनू से "सामग्रियों की तालिका" को सुलभ बनाना है, इसलिए उपयोगकर्ता जल्दी से कार्यों या कक्षाओं या दस्तावेज़ों में अनुभागों की घोषणाओं पर कूद सकता है।मैं एक elisp समारोह को असंकालिक रूप से कैसे चला सकता हूं?
इमेनू के पास कुछ अलग है काम करने के तरीके - पहले और अधिक सामान्य रूप से उपयोग किए जाने वाले तरीके में, एक प्रमुख मोड इमेनू को रेगेक्सप्स प्रदान करता है, और इमेनू बफर के स्कैन करने और इंडेक्स बनाने के लिए उन रेगेक्स का उपयोग करता है। Regexps की सूची imenu-generic-expression
में डालकर एक प्रमुख मोड इसे सेट करता है। दूसरा तरीका प्रमुख मोड के लिए अपना स्कैन करने के लिए है। यह वेरोड द्वारा परिभाषित फ़ंक्शन के नाम पर परिवर्तनीय imenu-create-index-function
को सेट करके ऐसा कर सकता है, जो सामग्री की तालिका वाली एक सूची देता है।
मैं बाद में कर रहा हूं - imenu-create-index-function
- लेकिन कभी-कभी एफएन को चलाने के लिए बहुत समय लगता है, 3 या 4 सेकंड या उससे अधिक कहें, जो यूआई को फ्रीज करता है। अगर मैं ऑपरेशन एसिंक्रोनस करता हूं, तो वह समस्या हल हो जाएगी।
मुझे एसिंच प्रक्रियाओं के बारे में पता है। स्कैन तर्क elisp में लागू किया गया है। क्या एसिंच प्रक्रिया में elisp चलाने के लिए संभव है? यदि हां, तो कैसे?
या, क्या एसिंक प्रक्रिया में जाने के बिना, एमएक्स में नियमित रूप से कुरकुरा रूप से चलाने के लिए कोई तरीका है?
मुझे लगता है कि फ़ॉन्ट-लॉक जिस तरह से करता है, यह निष्क्रिय होने पर फ़ॉन्ट करता है। यह राज्य को बनाए रखता है और एक समय में थोड़ा सा फ़ॉन्ट करता है, हमेशा याद रखता है कि यह कहां छोड़ा गया है, और क्या फ़ॉन्ट करने की आवश्यकता है, अंतिम फ़ॉन्टिफिकेशन चलाने के बाद क्या बदल गया है, आदि। क्या मेरी समझ सही है? शायद मैं इस वृद्धिशील दृष्टिकोण का उपयोग कर सकता हूं।
सिफारिशें?