Hervorhebung aller Kompilierungsfehler in Emacs

586
Kirill

Gibt es eine gute Möglichkeit, alle Kompilierungsfehler in emacs hervorzuheben, insbesondere im Haskell-Modus?

Die Funktion next-error( C-x `) hebt nur einen einzelnen Fehler hervor, setzt ihn aber nicht match-datazumindest haskell-modemit dem Fehler fest haskell-interactive-mode-next-error. Noch weniger hilfreich, ruft es (error "No more errors")beim letzten Fehler auf, daher denke ich, dass es vielleicht nur dazu gedacht ist, interaktiv aufgerufen zu werden.

Ich habe folgendes gemacht, um bei jedem Kompilierungsfehler Hervorhebungen für die Hervorhebung zu erstellen, aber es ist wirklich unübersichtlich und unzuverlässig. next-error-functionsoll durch den Kompilierungsmodus definiert werden ( haskell-interaction-modein meinem Fall); Bei der Rückkehr scheinen Match-Daten auf einen String zu verweisen. Ich verwende die Variable compilation-highlight-overlay, um die Überlagerung zu erhalten, die next-error erzeugt.

(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)))) 

Gibt es einen kanonischen Weg, dies zu tun?

1

1 Antwort auf die Frage

1
m2ym

Es ist sehr schwierig, next-error-functionalle Fehler ausfindig zu machen, da es sehr dringend implementiert wird.

Ich habe ein kleines Projekt mit dem Namen "Start" gestartet complation-highlight-el, mit dem wir mehr als einen Fehler gleichzeitig sehen können.

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

Noch in der experimentellen Phase, zögern Sie nicht, Probleme einzureichen.