메이저 모드를 작성할 때 종종 '문자열의 포인트?'를 아는 것이 유용합니다. '의견에 요점이 있습니까?'.
대부분의 주요 모드는 프로그래밍 언어를 구문 분석하려고 시도하는 것 같습니다. 예를 들면 다음과 같습니다.
python-syntax-content전화syntax-ppsshaskell-fill-paragraph전화syntax-ppss및re-search-forwardc-in-comment-line-prefix-p지점을 이동하고 전화looking-atsp-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 pos)))
왜 메이저 모드가 이것을하지 않습니까? 버퍼는 이미 글꼴 화되어 있으므로 더 빠르고 강력하며 코드가 덜 필요합니다.
font-lock-mode어떻게됩니까? (나는 당신이해야한다고 생각하지 않습니다.)