2012-04-23 19 views
5

एमाक्स को अभिव्यक्ति को हाइलाइट करने का एक अच्छा तरीका क्या होगा जिसमें संतुलित ब्रैकेट जैसी चीजें शामिल हो सकती हैं - उदा। जैसेemacs: संतुलित अभिव्यक्तियों को हाइलाइट करना (उदाहरण के लिए लाटेक्स टैग)

\highlightthis{some \textit{text} here 
some more text 
done now} 

highlight-regex कुछ सरल बातों के लिए अच्छी तरह से काम करता है, लेकिन मैं वास्तविक एक Emacs पंक्ति विराम को पहचान करने के लिए regex लेखन मुसीबत था, और निश्चित रूप से यह पहली बार बंद कोष्ठक तक मेल खाता है।

(एक माध्यमिक सवाल के रूप में:। किसी भी संकुल कि Emacs regex वाक्य रचना बहुत सराहना की जाएगी विस्तार करने के लिए संकेत - मैं इसके साथ बहुत कठिन समय चल रहा है, और मैं पर्ल में regexes के साथ काफी परिचित हूँ)

संपादित:

'(font-latex-user-keyword-classes (quote (("mycommands" (("highlightthis" "{")) (:slant italic :foreground "red") command)))) 
: मेरे विशिष्ट प्रयोजन के लिए (LaTeX टैग एक AUCTeX बफर में प्रकाश डाला), मैं इस एक AUCTeX विशिष्ट चर font-latex-user-keyword-classes को अनुकूलित करके काम करने के लिए प्राप्त करने में सक्षम था, कि .emacs में custom-set-variables को कुछ इस तरह कहते हैं

एक और सामान्य समाधान होगा हालांकि होने के लिए अच्छा होने तक!

उत्तर

1

आप उस क्षेत्र के साथ काम करने के लिए एस-एक्सप्रेशन पर कार्य करने वाले कार्यों का उपयोग कर सकते हैं, जिसे आप हाइलाइट करना चाहते हैं, और वास्तव में इसे हाइलाइट करने के लिए this question पर दिए गए समाधानों में से एक का उपयोग करें।

(defun my/highlight-function() 
    (interactive) 
    (save-excursion 
    (goto-char (point-min)) 
    (search-forward "\highlightthis") 
    (let ((end (scan-sexps (point) 1))) 
     (add-text-properties (point) end '(comment t face highlight))))) 

संपादित करें: यहाँ, Emacs 'मानक फ़ॉन्ट लॉकिंग सिस्टम के साथ एक समान कार्य का उपयोग कर एक उदाहरण है के रूप में Emacs-तुतलाना मैनुअल की search-based fontification खंड में विस्तार से बताया:

यहाँ एक उदाहरण है

(defun my/highlight-function (bound) 
    (if (search-forward "\highlightthis" bound 'noerror) 
     (let ((begin (match-end 0)) 
      (end (scan-sexps (point) 1))) 
     (set-match-data (list begin end)) 
     t) 
    nil)) 
(add-hook 'LaTeX-mode-hook 
      (lambda() 
      (font-lock-add-keywords nil '(my/highlight-function)))) 
+0

अच्छा विचार है, लेकिन मैं अभी तक यह काम नहीं कर सकता। सबसे पहले, "क्षेत्र हाइलाइटिंग" का समाधान मेरे लिए कुछ भी नहीं लगता है - यानी। (एड-टेक्स्ट-प्रॉपर्टीज 1 10 ...) को निष्पादित करना अकेले कथन 1 से 10 के प्रतीक को हाइलाइट नहीं करता है। दूसरा, भले ही मैं इसे काम पर लाऊं, मैं थोड़ा चिंतित हूं कि उस स्थान पर हाइलाइटिंग पिन हो जाएगी बफर। यह भी अच्छा होगा अगर इसे स्वचालित रूप से काम करने के लिए बनाया जा सके, जैसे कि अन्य सिंटैक्स हाइलाइटिंग कैसे करता है ... – laxxy

+0

"मुझे थोड़ा चिंता है कि बफर में उस स्थान पर हाइलाइटिंग पिन हो जाएगी" यह मामला नहीं है: टेक्स्ट गुण बफर में विशिष्ट पदों के लिए नहीं, उनके पाठ से जुड़े रहते हैं। – Francesco

+0

आपके लिए दो अन्य चिंताओं, मुझे लगता है कि [खोज-आधारित फ़ॉन्टिफिकेशन] (http://www.gnu.org/software/emacs/manual/html_node/elisp/Search_002dbased-Fontification.html#Search_002dbased-Fificationification) अनुभाग elisp मैनुअल आपकी मदद करनी चाहिए। आप विशेष रूप से 'font-lock-keyword' चर में 'फ़ंक्शन' तत्व जोड़ सकते हैं। – Francesco