summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2013-08-25 14:38:12 +0200
committerFelix S. Klock II <pnkfelix@pnkfx.org>2013-08-25 14:38:12 +0200
commit2e671d96c816312bd1ffc4221d225a51c2be35cd (patch)
tree1980d63d42da2524daa3079d38926052e8e95288
parent5488368b5b75722795ad2e578f74c0f19f47ec93 (diff)
downloadrust-mode-2e671d96c816312bd1ffc4221d225a51c2be35cd.tar.gz
revisions to emacs compilation regexp, more readable and robust.
-rw-r--r--rust-mode.el22
1 files 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