branch: elpa/rust-mode
commit 2e671d96c816312bd1ffc4221d225a51c2be35cd
Author: Felix S. Klock II <[email protected]>
Commit: Felix S. Klock II <[email protected]>

    revisions to emacs compilation regexp, more readable and robust.
---
 rust-mode.el | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/rust-mode.el b/rust-mode.el
index efe9f51..af1c28b 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -229,15 +229,23 @@ The initializer is `DEFAULT-TAB-WIDTH'.")
 ;; regexp (which is broken on a few edge cases), add our own 'rust
 ;; compilation error regexp and use it instead.
 (defvar rustc-compilation-regexps
-  (let ((re (concat "^\\([^ \n]+\\):\\([0-9]+\\):\\([0-9]+\\): "
-                    "\\([0-9]+\\):\\([0-9]+\\) "
-                    "\\(?:[Ee]rror\\|\\([Ww]arning\\)\\):")))
-    (cons re '(1 (2 . 4) (3 . 5) (6))))
+  (let ((file "\\([^ \n]+\\)")
+        (start-line "\\([0-9]+\\)")
+        (start-col  "\\([0-9]+\\)")
+        (end-line   "\\([0-9]+\\)")
+        (end-col    "\\([0-9]+\\)")
+        (error-or-warning "\\(?:[Ee]rror\\|\\([Ww]arning\\)\\)"))
+    (let ((re (concat "^" file ":" start-line ":" start-col
+                      ": " end-line ":" end-col
+                      " \\(?:[Ee]rror\\|\\([Ww]arning\\)\\):")))
+      (cons re '(1 (2 . 4) (3 . 5) (6)))))
   "Specifications for matching errors in rustc invocations.
 See `compilation-error-regexp-alist for help on their format.")
 
-(add-to-list 'compilation-error-regexp-alist-alist
-             (cons 'rustc rustc-compilation-regexps))
-(add-to-list 'compilation-error-regexp-alist 'rustc)
+(eval-after-load 'compile
+  '(progn
+     (add-to-list 'compilation-error-regexp-alist-alist
+                  (cons 'rustc rustc-compilation-regexps))
+     (add-to-list 'compilation-error-regexp-alist 'rustc)))
 
 ;;; rust-mode.el ends here

Reply via email to