Ich möchte Code mit verschiedenen Gesichtern in einem Nebenmodus hervorheben.
Hier ist ein Screenshot, der genau dem entspricht, was ich möchte:
Eine Sache, die mir fehlt, ist, die Kommentarzeichen #
zu haben
font-lock-comment-face
. Die Idee ist, Kommentare zu haben, die zu einer als Klartext hervorgehobenen Gliederung "gehören", damit sie leichter zu lesen sind. Während regelmäßige Kommentare mit ihrem üblichen weniger prominenten Gesicht.
Hier ist der Code, den ich verwendet habe:
(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)))
Die Sache ist, ich habe keine Ahnung von der Schnittstelle, auf der gearbeitet wird
font-lock-syntactic-face-function
, außer dass sie eine komplexe Datenstruktur empfängt state
, einen anderen Punktzustand hat und ein Gesicht zurückgibt.
Könnte jemand diese Schnittstelle erklären? Gibt es vielleicht eine bessere?