Hervorheben aller Kompilierungsfehler in Emacs

Hervorheben aller Kompilierungsfehler in Emacs

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

Die Funktion next-error( C-x `) hebt nur einen einzigen Fehler hervor, setzt match-dataden Fehler aber nicht auf , zumindest nicht in haskell-mode, mit ihrem haskell-interactive-mode-next-error. Noch weniger hilfreich ist, dass sie (error "No more errors")beim letzten Fehler aufruft, daher denke ich, dass sie vielleicht nur für den interaktiven Aufruf gedacht ist.

Ich habe Folgendes getan, um bei jedem Kompilierungsfehler Hervorhebungs-Overlays zu erstellen, aber es ist wirklich umständlich und unzuverlässig. next-error-functionsollte durch den Kompilierungsmodus definiert werden ( haskell-interaction-modein meinem Fall); bei der Rückgabe scheinen die Match-Daten auf eine Zeichenfolge zu verweisen. Ich verwende die Variable, compilation-highlight-overlayum das Overlay abzurufen, das der nächste Fehler erstellt.

(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 eine kanonische Möglichkeit, dies zu tun?

Antwort1

Es ist sehr schwierig, es auszunutzen, next-error-functionum alle Fehler zu finden, da es sehr imperativer Weise implementiert ist.

Ich habe ein kleines Projekt gestartet, complation-highlight-eldas es uns ermöglicht, mehr als einen Fehler gleichzeitig zu sehen.

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

Es befindet sich noch in der experimentellen Phase. Sie können gerne Probleme melden.

verwandte Informationen