突出顯示 emacs 中的所有編譯錯誤

突出顯示 emacs 中的所有編譯錯誤

有沒有一種好方法可以突出顯示 emacs 中的所有編譯錯誤,特別是在 haskell 模式下?

函數next-error( C-x `) 僅突出顯示一個錯誤,但它不會設定match-data該錯誤,至少在 中haskell-mode,其haskell-interactive-mode-next-error.更沒有幫助的是,它(error "No more errors")在最後一個錯誤時調用,所以我認為它可能只是為了互動式調用。

我執行了以下操作來在每個編譯錯誤處建立突出顯示疊加,但它確實很笨重且不可靠。next-error-function應該由編譯模式定義(haskell-interaction-mode在我的例子中);返回時,匹配資料似乎指向某個字串。我使用該變數compilation-highlight-overlay來獲取下一個錯誤創建的覆蓋。

(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

仍處於實驗階段,請隨時提交問題。

相關內容