Destacando todos os erros de compilação no emacs

Destacando todos os erros de compilação no emacs

Existe uma boa maneira de destacar todos os erros de compilação no emacs, especificamente no modo haskell?

A função next-error( C-x `) destaca apenas um único erro, mas não define match-datao erro, pelo menos em haskell-mode, com seu haskell-interactive-mode-next-error. Ainda menos útil, ele chama (error "No more errors")no último erro, então acho que talvez deva ser chamado apenas de forma interativa.

Fiz o seguinte para criar sobreposições de destaque a cada erro de compilação, mas é muito desajeitado e não confiável. next-error-functiondeve ser definido pelo modo de compilação ( haskell-interaction-modeno meu caso); no retorno, match-data parece apontar para alguma string. Eu uso a variável compilation-highlight-overlaypara obter a sobreposição criada pelo próximo erro.

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

Existe algum tipo de maneira canônica de fazer isso?

Responder1

É muito difícil explorar next-error-functionpara encontrar todos os erros, porque é implementado de forma muito imperativa.

Iniciei um pequeno projeto chamado complation-highlight-elque nos permite ver mais de um erro ao mesmo tempo.

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

Ainda em fase experimental, fique à vontade para enviar problemas.

informação relacionada