Vorrei evidenziare il codice con vari volti in una modalità minore.
Ecco uno screenshot vicino a quello che voglio:
Una cosa che mi manca è avere i caratteri di commento #
in
font-lock-comment-face
. L'idea è di avere commenti che "appartengono" a una struttura evidenziata come testo semplice, quindi è più facile da leggere. Pur avendo commenti regolari con la loro solita faccia meno prominente.
Ecco il codice che ho usato:
(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)))
Il fatto è che non ho idea dell'interfaccia su cui
font-lock-syntactic-face-function
opera, a parte il fatto che riceve una struttura di dati complessa state
, ha uno stato di punto diverso e restituisce una faccia.
Qualcuno potrebbe spiegare questa interfaccia? Ce n'è forse uno migliore?