Saya ingin menyorot kode dengan berbagai wajah dalam mode minor.
Berikut screenshot yang dekat dengan yang saya inginkan:
Satu hal yang saya hilang adalah memiliki karakter komentar #
di
font-lock-comment-face
. Idenya adalah untuk memiliki komentar yang "milik" garis besar disorot sebagai teks biasa, sehingga lebih mudah dibaca. Sementara memiliki komentar reguler dengan wajah yang biasanya kurang menonjol.
Berikut kode yang saya gunakan:
(setq-local font-lock-defaults
'(python-font-lock-keywords
nil nil nil nil
(font-lock-syntactic-face-function
. lpy-font-lock-syntactic-face-function)))
(defun lpy-font-lock-syntactic-face-function (state)
"Return syntactic face given STATE.
Returns 'defalt face for comments that belong to an outline."
(cond ((nth 3 state)
(if (python-info-docstring-p state)
font-lock-doc-face
font-lock-string-face))
((save-excursion
(while (and (> (point) (point-min))
(progn (move-beginning-of-line 0)
(eq (char-after) ?\#))))
(forward-line 1)
(looking-at "#\\*+ "))
'default)
(t
font-lock-comment-face)))
Masalahnya adalah, saya tidak memiliki petunjuk tentang antarmuka yang
font-lock-syntactic-face-function
beroperasi, selain menerima struktur data yang kompleks state
, memiliki status titik yang berbeda, dan mengembalikan wajah.
Bisakah seseorang menjelaskan antarmuka ini? Apakah mungkin ada yang lebih baik?
sumber