为什么主要模式不只是检查面部?
编写主模式时,知道“字符串中是否指向点?”通常很有用。“在评论中有意思吗?”。 大多数主要模式似乎都试图解析编程语言。例如: 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但还会检查是否在评论分隔符上 但是,这在某些情况下不起作用。在组织模式缓冲区中,这些方法无法正确检测源块中的注释。 这似乎也毫无意义,因为缓冲区已经显示了高亮的注释。 取而代之,您可以简单地检查以下点的人脸: (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 …