2011-09-13 6 views
6

मैं एक साधारण emacs मोड लिखता हूं। मैं स्पष्ट रूप से कैसे निर्दिष्ट करूं कि सभी चीजें उदा। वर्ग ब्रैकेट रंग होना चाहिए। इस तरह ख़ाली होना चाहिए:Emacs मोड: स्क्वायर ब्रैकेट में उस चीज़ को कैसे निर्दिष्ट किया जाना चाहिए

((if thing is in square brackets) . font-lock-string-face) 

उत्तर

6

मुझे लगता है कि आप एक प्रमुख मोड लिख रहे हैं, लेकिन font-lock-add-keywords मामूली मोड में भी काम करता है। C-h f RET font-lock-add-keywords के साथ अपने दस्तावेज़ देखें।

(define-derived-mode my-mode text-mode "mymode" 
    ;; some init code 
    (font-lock-add-keywords nil '(("\\[\\(.*\\)\\]" 
           1 font-lock-warning-face prepend))) 
    ;; some more init code 
) 
2

आप या तो मोड में आप हैं एक नई वाक्य रचना नियम शामिल करने के लिए विस्तार करने के लिए होगा या आप बस त्वरित और गंदी हाइलाइटिंग के लिए highlight-regexp उपयोग कर सकते हैं।

+0

मोड का विस्तार करने के लिए - यह है कि मैं क्या चाहते हो। जिस मोड को मैं विस्तारित करने जा रहा हूं वह एक साधारण है - मेरे द्वारा भी लिखा गया है (इसमें टैब-पूर्णता, सिंटैक्स हाइलाइटिंग और डिकिम के माध्यम से स्मार्ट टिप्पणियां हैं)। 'हाइटलाइट-रेगेक्सपी' निश्चित रूप से काम करेगा। आपके उत्तर के लिए धन्यवाद। – Adobe

+0

मैंने मूल मार्कडाउन मोड [यहां] बढ़ाया है (https://github.com/nibrahim/Hyde/blob/master/hyde-md.el)। आप इसे कैसे देख सकते हैं। यह कोई सिंटैक्स हाइलाइटिंग नहीं करता है लेकिन आप शायद अपने मोड में 'फ़ॉन्ट-लॉक-डिफॉल्ट' चर जोड़कर इसे प्राप्त कर सकते हैं। –

+0

बीटीडब्लू: मैं रंग कैसे निर्दिष्ट करूं? यह इसे निर्दिष्ट नहीं करता है: '(हाइलाइट-रेगेक्सपी "\\ [\\ (। +? \\) \\]"' हाय-रेड) ' – Adobe

2
तो यहाँ

एक सारांश है: एक विधा में नए कीवर्ड जोड़ने के लिए

(font-lock-add-keywords 'emacs-lisp-mode 
    '(("foo" . font-lock-keyword-face))) 

यह regexps हो सकता है:

(font-lock-add-keywords 'emacs-lisp-mode '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 

(इस वर्ग कोष्ठक में सब कुछ के फॉन्ट होने के लिए बनाता है दिए गए रंग का)

वर्तमान मोड और वर्तमान emacs सत्र के लिए तुम सिर्फ मूल्यांकन कर सकते हैं निम्नलिखित:

(font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 

(नोट - आप एक मोड यहाँ निर्दिष्ट नहीं करते)

यह स्थायी आप मोड पर एक हुक के रूप में यह जोड़ सकते हैं बनाने के लिए:

(add-hook 'bk-grmx-mode-hook 
      (lambda() 
      (font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 
     ) 
) 

आप भी इसे एक विधा विनिर्देश को जोड़ सकते हैं:

(define-derived-mode bk-grmx-mode fundamental-mode 
    (setq font-lock-defaults '(bk-grmx-keyWords)) 
    ;; the next line is added: 
    (font-lock-add-keywords nil '(("\\[\\(.+?\\)\\]" . font-lock-keyword-face))) 
    (setq mode-name "bk-grmx-mode") 
संबंधित मुद्दे