Büyük bir mod yazarken 'dizede nokta var mı?' 'Bir yorumda nokta var mı?'.
Çoğu büyük mod programlama dilini ayrıştırmaya çalışıyor gibi görünmektedir. Örneğin:
python-syntax-content
aramalarsyntax-ppss
haskell-fill-paragraph
çağrılarsyntax-ppss
vere-search-forward
c-in-comment-line-prefix-p
noktayı hareket ettirir ve çağırırlooking-at
sp-point-in-comment
çağrılarsyntax-ppss
değil, aynı zamanda kontrol eder bir açıklama delimeter üzerinde ise
Ancak, bu bazı durumlarda işe yaramaz. Kuruluş kipi arabelleklerinde, kaynak bloklardaki yorumlar bu yaklaşımlarla doğru algılanmaz.
Ayrıca arabellek vurgulanmış yorumları gösterdiği için anlamsız görünüyor .
Bunun yerine, yüzleri kolayca inceleyebilirsiniz:
(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)))
Neden büyük modlar bunu yapmıyor? Arabellek zaten fontified, bu yüzden bu daha hızlı, daha sağlam ve daha az kod gerektirir beklenir.
font-lock-mode
? (