Destacando todos os erros de compilação no emacs

1

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

A função next-error ( Cx ') realça apenas um único erro, mas não define match-data para o 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 seja para ser chamado de forma interativa.

Eu fiz o seguinte para criar sobreposições de destaque em cada erro de compilação, mas é realmente desajeitado e pouco confiável. next-error-function deve ser definido pelo modo de compilação ( haskell-interaction-mode no meu caso); no retorno, os dados de correspondência parecem apontar para alguma string. Eu uso a variável compilation-highlight-overlay para obter a sobreposição que o próximo erro cria.

(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 forma canônica de fazer isso?

    
por Kirill 03.07.2014 / 05:23

1 resposta

1

É muito difícil explorar next-error-function para encontrar todos os erros, porque ele é implementado de maneira muito imperativa.

Eu iniciei um pequeno projeto chamado complation-highlight-el que nos permite ver mais de um erro ao mesmo tempo.

link

Ainda no estágio experimental, sinta-se à vontade para enviar problemas.

    
por 26.08.2014 / 05:57

Tags