Подсветка всех ошибок компиляции в emacs

Подсветка всех ошибок компиляции в emacs

Есть ли хороший способ подсветить все ошибки компиляции в emacs, особенно в haskell-mode?

Функция next-error( C-x `) выделяет только одну ошибку, но не устанавливает match-dataее, по крайней мере в haskell-mode, с ее haskell-interactive-mode-next-error. Еще менее полезно то, что она вызывается (error "No more errors")при последней ошибке, поэтому я думаю, что, возможно, она предназначена только для интерактивного вызова.

Я сделал следующее, чтобы создать подсветку наложений при каждой ошибке компиляции, но это действительно неуклюже и ненадежно. next-error-functionпредполагается, что определяется режимом компиляции ( haskell-interaction-modeв моем случае); при возврате match-data, похоже, указывает на некоторую строку. Я использую переменную, compilation-highlight-overlayчтобы получить наложение, которое создает next-error.

(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

Пока что это экспериментальная стадия, не стесняйтесь присылать сообщения о проблемах.

Связанный контент