diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-25 14:38:12 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2013-08-25 14:38:12 +0200 |
| commit | 2e671d96c816312bd1ffc4221d225a51c2be35cd (patch) | |
| tree | 1980d63d42da2524daa3079d38926052e8e95288 | |
| parent | 5488368b5b75722795ad2e578f74c0f19f47ec93 (diff) | |
| download | rust-mode-2e671d96c816312bd1ffc4221d225a51c2be35cd.tar.gz | |
revisions to emacs compilation regexp, more readable and robust.
| -rw-r--r-- | rust-mode.el | 22 |
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 |
