जब एक प्रमुख मोड लिखते हैं, तो यह अक्सर जानना उपयोगी होता है 'एक स्ट्रिंग में बिंदु?' 'एक टिप्पणी में इंगित है?'
अधिकांश प्रमुख मोड प्रोग्रामिंग भाषा को पार्स करने का प्रयास करते हैं। उदाहरण के लिए:
python-syntax-content
कॉलsyntax-ppss
haskell-fill-paragraph
कॉलsyntax-ppss
औरre-search-forward
c-in-comment-line-prefix-p
चारों ओर कदम और कॉलlooking-at
sp-point-in-comment
कॉलsyntax-ppss
करता है, लेकिन यह भी जाँचता है कि यह एक टिप्पणी परिधि पर है
हालाँकि, यह कुछ मामलों में काम नहीं करता है। ऑर्ग-मोड बफ़र्स में, इन तरीकों से स्रोत ब्लॉक में टिप्पणियों का सही ढंग से पता नहीं लगाया जाता है।
यह भी व्यर्थ लगता है, क्योंकि बफर पहले से ही हाइलाइट किए गए टिप्पणियों को दिखा रहा है ।
इसके बजाय, आप बस बिंदु पर चेहरों का निरीक्षण कर सकते हैं:
(defun wh--get-faces (pos)
"Get all the font faces at POS."
(remq nil
(list
(get-char-property pos 'read-face-name)
(get-char-property pos 'face)
(plist-get (text-properties-at pos) 'face))))
(defun wh-string-p (pos)
"Return non-nil if POS is inside a string."
(memq 'font-lock-string-face (wh--get-faces pos)))
प्रमुख मोड ऐसा क्यों नहीं करते हैं? बफ़र पहले से ही फ़ॉन्टबद्ध है, इसलिए मुझे उम्मीद है कि यह तेज़, अधिक मजबूत होगा, और कम कोड की आवश्यकता होगी।
font-lock-mode
? (ऐसा नहीं है कि मुझे लगता है कि आपको चाहिए।)