Emacs, 특히 Haskell 모드에서 모든 컴파일 오류를 강조 표시할 수 있는 좋은 방법이 있습니까?
next-error
( ) 함수는 단일 오류만 강조 표시하지만 적어도 에서는 해당 오류로 C-x `설정되지 않습니다 . 덜 유용할 수도 있지만 마지막 오류가 발생할 때 호출하므로 대화형으로만 호출해야 하는 것일 수도 있습니다.match-data
haskell-mode
haskell-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
아직 실험 단계이므로 자유롭게 문제를 제출해 주세요.