Làm nổi bật tất cả các lỗi biên dịch trong emacs


1

Có cách nào tốt để làm nổi bật tất cả các lỗi biên dịch trong emacs, cụ thể là ở chế độ haskell không?

Chức năng next-error( C-x `) nhấn mạnh chỉ có một lỗi duy nhất, nhưng nó không được thiết lập match-datađể lỗi này, ít nhất là trong haskell-mode, với nó haskell-interactive-mode-next-error. Thậm chí ít hữu ích hơn, nó gọi (error "No more errors")ở lỗi cuối cùng, vì vậy tôi nghĩ có lẽ nó chỉ được gọi là tương tác.

Tôi đã làm như sau để tạo lớp phủ nổi bật ở mỗi lỗi biên dịch, nhưng nó thực sự rất khó hiểu và không đáng tin cậy. next-error-functionđược cho là được xác định bởi chế độ biên dịch ( haskell-interaction-modetrong trường hợp của tôi); khi trả về, dữ liệu khớp dường như trỏ đến một chuỗi nào đó. Tôi sử dụng biến compilation-highlight-overlayđể lấy lớp phủ mà lỗi tiếp theo tạo ra.

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

Có một số cách thức kinh điển để làm điều này?

Câu trả lời:


1

Rất khó để khai thác next-error-functionđể tìm ra tất cả các lỗi, bởi vì nó được thực hiện theo cách rất cấp bách.

Tôi đã bắt đầu một dự án nhỏ gọi là complation-highlight-elcho phép chúng tôi thấy nhiều lỗi cùng một lúc.

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

Vẫn còn giai đoạn thử nghiệm, hãy gửi vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.