マイナーモードでさまざまな面を持つコードを強調表示したいと思います。
ここに私が欲しいものに近いスクリーンショットがあります:
私が見逃していることの1つは、にコメント文字#
があること
font-lock-comment-face
です。考えは、アウトラインに「属している」コメントをプレーンテキストとして強調表示することで、読みやすくなります。いつもの目立たない顔で定期的なコメントをしている間。
これが私が使ったコードです:
(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)))
実は、私がfont-lock-syntactic-face-function
操作するインターフェースについては、複雑なデータ構造を受け取り、state
異なる点の状態を持ち、顔を返すこと以外は何の手掛かりもありません
。
誰かがこのインターフェースを説明できますか?おそらくもっと良いものはありますか?