문제

나는 Lisp에서 현재 로드된 모든 기호를 가져와 분석하고 글꼴 잠금으로 글꼴을 만들 수 있도록 SLIME을 약간 수정하고 있습니다.

이 모든 단계를 수행했지만 작은 문제가 있습니다. 글꼴 잠금에서 키워드 목록이 변경되면 주요 lisp 모드를 다시 시작하지 않으면 버퍼가 업데이트되지 않습니다.나는 키워드를 업데이트할 때마다 lisp-mode를 다시 시작하고 싶지 않습니다. 왜냐하면 처음으로 파일을 로드할 때만 실행하려는 lisp-mode에 여러 후크가 있기 때문입니다.

글꼴 잠금을 업데이트하여 새로운 키워드를 모두 읽고 그에 따라 버퍼의 글꼴을 지정하는 다른 방법이 있습니까?글꼴 잠금을 끄고 사용하기 font-lock-fontify-buffer 트릭을 수행하지 않습니다.

UPD:현상금이 추가되었습니다. 질문은 아직 남아 있습니다.주요 모드를 다시 로드하지 않고 글꼴 잠금 키워드를 다시 로드하는 방법이 필요합니다.

도움이 되었습니까?

해결책

좋습니다. 대신 이렇게 하면 어떨까요?

(defun my-font-lock-restart ()
  (interactive)
  (setq font-lock-mode-major-mode nil)
  (font-lock-fontify-buffer))

다른 팁

메이저 모드를 실행한다고 해서 글꼴 잠금이 작동하는 것은 아닙니다.저는 SLIME이나 lisp-mode의 내부에 대해 잘 알지 못하지만 변수만 설정하면 작동하게 됩니다.글꼴 잠금 모드를 전환하면 글꼴 잠금이 새 키워드를 염두에 두고 글꼴 변경을 시작하게 됩니다. font-lock-fontify-buffer.

저는 주로 cperl 모드를 해킹하는데, 이는 간단한 문제입니다. cperl-init-faces (내부 글꼴 잠금 변수를 설정) 및 글꼴 잠금을 다시 시작합니다.lisp-mode는 다음을 호출할 필요가 없다는 점을 제외하면 크게 다르지 않아야 합니다. cperl-init-faces ;)

편집하다:lisp-interaction-mode를 사용한 일부 실험에서는 글꼴 잠금 모드를 다시 시작하는 것조차 꼭 필요한 것은 아니라는 사실이 드러났습니다.어떻게든 글꼴화를 다시 트리거하는 한 글꼴 잠금 키워드를 변경하는 것만으로도 충분합니다.(텍스트 편집, 글꼴 잠금-글꼴 수정-버퍼 등)

일시적으로 모드 후크 변수를 지우고 다시 시작할 수 있습니다.

(defun my-restart-lisp-mode ()
  (interactive)
  (let ((lisp-mode-hook nil))
    (normal-mode)))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top