font-lock-syntactic-face-function
is a regular variable from Font Lock, more specifically from the Syntactic Font Lock phase (emphasis mine):
Bu değişken sıfır değilse, belirli bir sözdizim öğesi için hangi yüzün kullanılacağını belirlemek için bir işlev olmalıdır (bir dize veya yorum). Değer normalde font-lock-defaults'larda başka bir varis elemanı ile ayarlanır.
Bu işlev bir argümanla, tarafından döndürülen noktada parse durumu ile çağrılır ve bir yüze geri dönmelidir . Varsayılan değer, yorumlar için font-lock-comment-face ve dizeler için font-lock-string-face değerini döndürür (bkz. Yazı Tipi Kilidi için Yüzler).
parse-partial-sexp
in turn returns a list which describes Emacs' current syntactic state, which is essentially the result of the application of the syntax table to the current buffer. The list is rather complex, hence I'll spare it here; you can see the complete reference in the docstring of parse-partial-sexp
. The purpose of this function is to change the face applied to a syntactic element under certain rules. The beginning of your function demonstrates this: If the current string is a docstring, use a different face for it.
Ancak, yüz her zaman bütün sözdizimsel öğeye, yani tüm dizeye veya yoruma uygulanır. Bu işlevle tek tek bölümleri vurgulayamazsınız ve yalnızca bu amaçla state
'e bakmalısınız — (python-info-docstring-p state)
gibi senin kodunda. Bu yerde kullanmayın kullanın; Yazı tipi kilitlemenin bu aşamasında point
değerinin uygun şekilde tanımlanıp tanımlanmadığından emin değilim.
Parçaları bir araya getirmek, amacınız için yanlış bir işlev kullanıyorsunuz, işte bu yüzden işe yaramazsınız.
İstediğiniz vurgulamayı yapmaya çalışmıyorum, ama amacınız için çok derin bir yol kazandığınızı düşünüyorum. Bir şeyleri doğru anlıyorsam, yorumda ana hatları vurgulamak istersiniz.
Haklıysam, özel bir şekilde font-lock-keywords
'e ihtiyacınız var:
(my/find-outline-in-comment-p 0 'outline-face t)
anahat yüzü
, başlığa uygulamak istediğiniz yüzdeyse t
, buradaki herhangi bir önceki yazı tipi kilitlemeyi geçersiz kılmak anlamına gelir ve /Yorumda bul-anahattır
bir eşleme işlevi ( font-lock-defaults
belgesine bakın) olup, bir konum alır ve arasındaki bir yorumda ilk taslağı arar (nokta)
ve bu konum, eşleşme verilerinin vurgulandığı anahatın uzantılarını döndürür.
Ana hatları bulmak için yorumlar için ( font-lock-comment-face
veya sözdizimsel durumu kullanarak) tarama yaparsınız ve ardından look-at
komutunu kullanırsınız. yorum bir anahat var.