Emacs의 모든 컴파일 오류 강조 표시

Emacs의 모든 컴파일 오류 강조 표시

Emacs, 특히 Haskell 모드에서 모든 컴파일 오류를 강조 표시할 수 있는 좋은 방법이 있습니까?

next-error( ) 함수는 단일 오류만 강조 표시하지만 적어도 에서는 해당 오류로 C-x `설정되지 않습니다 . 덜 유용할 수도 있지만 마지막 오류가 발생할 때 호출하므로 대화형으로만 호출해야 하는 것일 수도 있습니다.match-datahaskell-modehaskell-interactive-mode-next-error(error "No more errors")

컴파일 오류가 발생할 때마다 하이라이트 오버레이를 만들기 위해 다음을 수행했지만 정말 투박하고 신뢰할 수 없습니다. 컴파일 모드( 내 경우에는) next-error-function에 의해 정의되어야 합니다 . haskell-interaction-mode반환 시 일치 데이터가 일부 문자열을 가리키는 것 같습니다. 변수를 사용하여 compilation-highlight-overlay다음 오류가 생성되는 오버레이를 가져옵니다.

(let (buf (just-started t) errors overlays)
     ;; Ask next-error to create all the highlighting overlays, save
     ;; their locations, then delete them, use the locations to
     ;; create our own overlays.
     (ignore-errors
       (when (setq buf (next-error-find-buffer))
         (save-match-data
           (save-excursion
             (dotimes (max-iter 10)
               (with-current-buffer buf
                 (funcall next-error-function 1 just-started)
                 (setq just-started nil)
                 (let* ((o compilation-highlight-overlay)
                        (start (overlay-start o)) (end (overlay-end o)))
                   ;; (message "Found (%s,%s)" start end)
                   (push (cons start end) errors)
                   (push o overlays))))))))
     (mapc 'delete-overlay overlays)
     (dolist (err errors)
       (let ((o (make-overlay (car err) (cdr err))))
         (overlay-put o 'category 'error-highlight))))

이 작업을 수행하는 일종의 표준적인 방법이 있습니까?

답변1

next-error-function매우 명령적인 방식으로 구현되기 때문에 모든 오류를 찾아 악용하는 것은 매우 어렵습니다 .

complation-highlight-el나는 동시에 하나 이상의 오류를 볼 수 있게 해주는 작은 프로젝트를 시작했습니다 .

https://github.com/m2ym/compilation-highlight-el

아직 실험 단계이므로 자유롭게 문제를 제출해 주세요.

관련 정보