なぜメジャーモードは単に顔を検査しないのですか?
メジャーモードを作成する場合、「文字列内のポイントはどこにあるのか?」「コメントにポイントがありますか?」 ほとんどの主要なモードは、プログラミング言語を解析しようとするようです。例えば: python-syntax-content 呼び出し syntax-ppss haskell-fill-paragraph呼び出しsyntax-ppssとre-search-forward c-in-comment-line-prefix-p ポイントを移動して呼び出します looking-at sp-point-in-comment呼び出しますsyntax-ppssが、コメント区切りにあるかどうかもチェックします ただし、これが機能しない場合もあります。org-modeバッファでは、ソースブロック内のコメントはこれらのアプローチでは正しく検出されません。 バッファはすでにハイライトされたコメントを表示しているので、それも無意味に見えます。 代わりに、ポイントで面を単に検査することができます: (defun wh--get-faces (pos) "Get all the font faces at POS." (remq nil (list (get-char-property pos 'read-face-name) (get-char-property pos 'face) (plist-get (text-properties-at pos) 'face)))) (defun wh-string-p (pos) "Return non-nil if POS is inside a string." (memq 'font-lock-string-face (wh--get-faces …