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