Emacs: स्कीम मोड में 'लैम्ब्डा' के बजाय 'λ' कैसे डालें?


10

बहुत पहले, मैं एक टेक्स्ट एडिटर फंक्शन में आया, जिसने 'लंबो' शब्द को 'λ' अक्षर से बदल दिया। मैं इसे एमाक्स में करना चाहूंगा। मेरी प्राथमिकता:

  • मैं केवल कुछ मोड में इस फ़ंक्शन को सक्रिय करना चाहता हूं (इसे स्कीम-मोड के लिए सक्रिय करें लेकिन उदाहरण के लिए सी-मोड के लिए इसे बंद करें)।

  • काम पर मैं अभी भी emacs के पुराने संस्करण का उपयोग करता हूं, इसलिए समाधान emacs22 और emacs23 के लिए काम करना चाहिए।

मुझे कैसे आगे बढ़ना चाहिए?

जवाबों:


8

आप एक मोड हुक बनाते हैं, जो lambdaग्रीक वर्ण के साथ बदलता है ।

   (defun sm-greek-lambda ()
       (font-lock-add-keywords nil `(("\\<lambda\\>"
           (0 (progn (compose-region (match-beginning 0) (match-end 0)
           ,(make-char 'greek-iso8859-7 107))
           nil))))))

फिर आप इस हुक को अपने मोड में जोड़ें:

   (add-hook 'emacs-lisp-mode-hook 'sm-greek-lambda)

2
बेहतर होगा नाम बदलने के लिए होगा sm-lambda-mode-hookद्वारा sm-replace-lambdaया sm-greek-lambdaXXX-mode-hookआमतौर पर run-hookनिर्दिष्ट मोड द्वारा चलाए गए हुक की पहचान करने के लिए उपयोग किया जाता है और इस प्रकार आप इसका उपयोग कर सकते हैं add-hook
डेमरोड

क्या make-charसिर्फ 22 का समर्थन करना है?
जॉन पुरडी

@ डायरोड: क्या आप कृपया XXX-mode-hookउत्तर में परिभाषित एक और इस रिवाज के बीच अंतर बता सकते हैं ? या कम से कम मुझे एक उपयोगी दस्तावेज की ओर इशारा करें?
रहमु

@ मरमु: xxx-mode-hookआमतौर पर हुक का नाम - साथ run-hooks- मोड से चलता है xxx। यानी emacs-lisp-mode-hookभाग गया जब समारोह है emacs-modeकहा जाता है। इस मामले में, कोई हुक नहीं चलता है लेकिन एक फ़ंक्शन को हुक में जोड़ा जाता है। पर देखो elisp मैनुअल (हुक) अधिक जानकारी के लिए।
डेमरोड

@rahmu: बस एक छोटा सा उदाहरण जोड़ने के लिए, आप कर सकते हैं (add-hook 'emacs-lisp-mode-hook 'some-function)लेकिन (add-hook 'sm-lambda-mode-hook 'some-function)कभी काम नहीं करेगा जब तक कि आप कोड है कि करता है में से कुछ टुकड़ा है (run-hooks 'sm-lambda-mode-hook)
Daimrod
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.