2009-09-16 11 views
8

मैं एसएलईएमई में छोटा संशोधन कर रहा हूं, ताकि मैं वर्तमान में लिस्प से सभी लोड किए गए प्रतीकों को प्राप्त कर सकूं, उनका विश्लेषण कर सकूं और फ़ॉन्ट-लॉक उन्हें फ़ॉन्ट कर सकूं।प्रमुख मोड रीलोड के बिना emacs में फ़ॉन्ट-लॉक कीवर्ड अपडेट करना

मैं इन सभी चरणों कर करने में कामयाब रहे, लेकिन मैं एक छोटी सी समस्या है - जब कीवर्ड सूची में आने वाले बदलाव font-लॉक बफर अपडेट नहीं किया जाता जब तक कि आप प्रमुख तुतलाना मोड को पुनरारंभ करें। मैं क्योंकि मुझे लगता है कि मैं केवल चलाने के लिए जब मैं पहली बार के लिए फ़ाइल को लोड चाहते तुतलाना मोड पर कई हुक है तुतलाना-मोड, हर बार जब मैं कीवर्ड अपडेट को पुनः आरंभ करने नहीं करना चाहती।

वहाँ तो यह सब तो नए कीवर्ड को पढ़ता है और उसके अनुसार बफर fontifies फ़ॉन्ट-लॉक अपडेट करने का एक अन्य तरीका है? फ़ॉन्ट-लॉक को बंद करना और font-lock-fontify-buffer का उपयोग करना चाल नहीं करता है।

युपीडी: जोड़ा इनाम - सवाल अब भी निर्भर है। मुझे प्रमुख मोड को पुनः लोड किए बिना फ़ॉन्ट-लॉक कीवर्ड को फिर से लोड करने का एक तरीका चाहिए।

उत्तर

5

ठीक है, यह बजाय तरीके के बारे में:

(defun my-font-lock-restart() 
    (interactive) 
    (setq font-lock-mode-major-mode nil) 
    (font-lock-fontify-buffer)) 
+0

बहुत बढ़िया, यह काम करता प्रतीत होता है! – freiksenet

1

प्रमुख मोड ट्रिगर क्या font-ताला अपने काम करते हैं बनाता है नहीं है। मैं एसएलईएमई या लिस्पी-मोड के आंतरिक से परिचित नहीं हूं, लेकिन केवल वैरिएबल को सेट करना इसे काम करना चाहिए। font-लॉक-मोड टॉगल करने से फ़ॉन्ट-लॉक मन में नए कीवर्ड के साथ refontifying शुरू करते हैं, ऐसा करना चाहिए font-lock-fontify-buffer के रूप में कर देगा।

मैं अधिकतर cperl-mode पर हैक करता हूं, और यह cperl-init-faces (जो आंतरिक फ़ॉन्ट-लॉक चर सेट करता है) और फ़ॉन्ट-लॉक को पुनरारंभ करने का एक साधारण मामला है। cperl-init-faces पर कॉल की आवश्यकता नहीं होने के बावजूद लिस्प-मोड बहुत अलग नहीं होना चाहिए;)

संपादित करें: लिस्प-इंटरैक्शन-मोड के साथ कुछ प्रयोग से पता चलता है कि फ़ॉन्ट-लॉक-मोड को पुनरारंभ करना भी कड़ाई से जरूरी नहीं है। बस फ़ॉन्ट-लॉक-कीवर्ड बदलना पर्याप्त है, जब तक कि आप किसी भी तरह से फ़ॉन्टिफिकेशन को फिर से ट्रिगर करते हैं। (पाठ संपादित करना, font-लॉक-fontify-बफर, आदि)

+0

यह बहुत अजीब है। कीवर्ड संशोधित करने के लिए आप क्या उपयोग करते हैं? मैं "फ़ॉन्ट-लॉक-एड-कीवर्ड" का उपयोग करता हूं। – freiksenet

+0

फ़ॉन्ट-लॉक पुनरारंभ उदाहरण के लिए पायथन मोड में भी मदद नहीं करता है। शायद यह Emacs का मेरा संस्करण है? आपके पास क्या संस्करण है? मेरे पास x86-64 उबंटू पर जीएनयू Emacs 23.1.50.1 है। – freiksenet

1

आप अस्थायी रूप से मोड हुक चर स्पष्ट और उसे पुन: प्रारंभ कर सकते हैं:

(defun my-restart-lisp-mode() 
    (interactive) 
    (let ((lisp-mode-hook nil)) 
    (normal-mode))) 
+0

कूल, मैं इसे आज़माउंगा। मुझे आश्चर्य है कि यह डिफ़ॉल्ट रूप से वर्णित जॉकवे की तरह क्यों काम नहीं करता है :) – freiksenet

+0

ठीक है, यह बेहतर है, लेकिन यह उदाहरण के लिए कीचड़ हुक समेत सभी हुक अक्षम करता है, जो अच्छा नहीं है :(मुझे सच में आश्चर्य है कि ऐसा करना संभव है यह मोड को पुनरारंभ किए बिना। – freiksenet