Tôi muốn làm nổi bật mã với nhiều khuôn mặt khác nhau trong chế độ nhỏ.
Đây là một ảnh chụp màn hình gần với những gì tôi muốn:
Một điều mà tôi đang thiếu là có các bình luận chars #
trong
font-lock-comment-face
. Ý tưởng là để các bình luận "thuộc về" một phác thảo được tô sáng dưới dạng văn bản thuần túy, để dễ đọc hơn. Trong khi có những bình luận thường xuyên với khuôn mặt ít nổi bật hơn bình thường của họ.
Đây là mã mà tôi đã sử dụng:
(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)))
Vấn đề là, tôi không có manh mối nào về giao diện
font-lock-syntactic-face-function
hoạt động, ngoài việc nó nhận được cấu trúc dữ liệu phức tạp state
, có trạng thái điểm khác nhau và trả về một khuôn mặt.
Ai đó có thể giải thích giao diện này? Có một cái tốt hơn có lẽ?