[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/rust-mode 15a077a 458/486: rustc-colon-compilation-regexps
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/rust-mode 15a077a 458/486: rustc-colon-compilation-regexps: improve highlighting. |
Date: |
Sat, 7 Aug 2021 09:26:14 -0400 (EDT) |
branch: elpa/rust-mode
commit 15a077a61743f49076eb9a1c5c77a4279e01a736
Author: Nathan Moreau <nathan.moreau@m4x.org>
Commit: Nathan Moreau <nathan.moreau@m4x.org>
rustc-colon-compilation-regexps: improve highlighting.
---
rust-mode-tests.el | 60 +++++++++++++++++++++++++++++++-----------------------
rust-mode.el | 19 ++++++++---------
2 files changed, 44 insertions(+), 35 deletions(-)
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 363d73c..da874ec 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -3338,6 +3338,31 @@ impl Two<'a> {
(let ((default-directory test-dir))
(should (equal (expand-file-name (rust-buffer-project))
manifest-file))))))
+(defun rust-collect-matches (spec)
+ (let ((matches nil))
+ (goto-char (point-min))
+ (while (re-search-forward (car spec) nil t)
+ (push
+ (mapcar (lambda (r)
+ (let ((match-pos
+ (nth (cdr r) spec)))
+ (if (eq :type (car r))
+ (cond ((consp match-pos)
+ (compilation-face match-pos))
+ (t
+ (cdr (assoc match-pos '((1 . compilation-warning)
+ (0 . compilation-info)
+ (2 .
compilation-error))))))
+ (match-string match-pos))))
+ ;; see compilation-error-regexp-alist
+ '((:file . 1)
+ (:line . 2)
+ (:column . 3)
+ (:type . 4)
+ (:mouse-highlight . 5)))
+ matches))
+ (nreverse matches)))
+
(ert-deftest compilation-regexp-dashes ()
(with-temp-buffer
;; should match
@@ -3345,34 +3370,19 @@ impl Two<'a> {
(insert "error[E1234]: found a -> b\n --> file2.rs:12:34\n\n")
(insert "warning found a -> b\n --> file3.rs:12:34\n\n")
(insert "note: `ZZZ` could also refer to the constant imported here -> b\n
--> file4.rs:12:34\n\n")
+ (insert " ::: file5.rs:12:34\n\n")
;; should not match
(insert "werror found a -> b\n --> no_match.rs:12:34\n\n")
- (goto-char (point-min))
- (let ((matches nil))
- (while (re-search-forward (car rustc-compilation-regexps) nil t)
- (push
- (mapcar (lambda (r)
- (let ((match-pos
- (nth (cdr r) rustc-compilation-regexps)))
- (if (eq :type (car r))
- (compilation-face match-pos)
- (match-string match-pos))))
- ;; see compilation-error-regexp-alist
- '((:file . 1)
- (:line . 2)
- (:column . 3)
- (:type . 4)
- (:mouse-highlight . 5)))
- matches))
- (setq matches (reverse matches))
-
- (should (equal
- '(("file1.rs" "12" "34" compilation-error "file1.rs:12:34")
- ("file2.rs" "12" "34" compilation-error "file2.rs:12:34")
- ("file3.rs" "12" "34" compilation-warning "file3.rs:12:34")
- ("file4.rs" "12" "34" compilation-info "file4.rs:12:34"))
- matches)))))
+ (should (equal
+ '((("file1.rs" "12" "34" compilation-error "file1.rs:12:34")
+ ("file2.rs" "12" "34" compilation-error "file2.rs:12:34")
+ ("file3.rs" "12" "34" compilation-warning "file3.rs:12:34")
+ ("file4.rs" "12" "34" compilation-info "file4.rs:12:34"))
+ (("file5.rs" "12" "34" compilation-info "file5.rs:12:34")))
+ (mapcar #'rust-collect-matches
+ (list rustc-compilation-regexps
+ rustc-colon-compilation-regexps))))))
;; If electric-pair-mode is available, load it and run the tests that use it.
If not,
;; no error--the tests will be skipped.
diff --git a/rust-mode.el b/rust-mode.el
index a53d320..0e95575 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -1928,23 +1928,22 @@ Return the created process."
(or (rust--format-error-handler)
(message "rustfmt detected problems, see *rustfmt* for more."))))))
-(defvar rustc-compilation-regexps
+(defvar rustc-compilation-location
(let ((file "\\([^\n]+\\)")
(start-line "\\([0-9]+\\)")
(start-col "\\([0-9]+\\)"))
- (let ((re (concat "^\\(?:error\\|\\(warning\\)\\|\\(note\\)\\)[^\0]+?-->
\\("
- file ":" start-line ":" start-col "\\)")))
- (cons re '(4 5 6 (1 . 2) 3))))
+ (concat "\\(" file ":" start-line ":" start-col "\\)")))
+
+(defvar rustc-compilation-regexps
+ (let ((re (concat "^\\(?:error\\|\\(warning\\)\\|\\(note\\)\\)[^\0]+?--> "
+ rustc-compilation-location)))
+ (cons re '(4 5 6 (1 . 2) 3)))
"Specifications for matching errors in rustc invocations.
See `compilation-error-regexp-alist' for help on their format.")
(defvar rustc-colon-compilation-regexps
- (let ((file "\\([^\n]+\\)")
- (start-line "\\([0-9]+\\)")
- (start-col "\\([0-9]+\\)"))
- (let ((re (concat "^ *::: " file ":" start-line ":" start-col ; :::
foo/bar.rs
- )))
- (cons re '(1 2 3 0)))) ;; 0 for info type
+ (let ((re (concat "^ *::: " rustc-compilation-location)))
+ (cons re '(2 3 4 0 1)))
"Specifications for matching `:::` hints in rustc invocations.
See `compilation-error-regexp-alist' for help on their format.")
- [nongnu] elpa/rust-mode bb9bbd2 413/486: readme: recommend setting indent-tabs-mode to nil, (continued)
- [nongnu] elpa/rust-mode bb9bbd2 413/486: readme: recommend setting indent-tabs-mode to nil, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 6dca073 414/486: readme: make other useful packages a list, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 7960c74 417/486: Do not allow subword-match when detecting built-in formatting macros, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 5ad9b59 418/486: subword-match for built-in formatting macros: add a test., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 484d675 419/486: Adding GitHub actions., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode c5ab165 423/486: mention LSP support, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a36bc70 426/486: Merge pull request #340 from brotzeit/readme, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 6a57253 427/486: rust-dbg-wrap-or-unwrap: bind to C-c C-d rather than C-c d., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode e8345f6 440/486: Add triagebot configuration (#364), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a364b24 445/486: Make *rustfmt* buffer readonly., ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 15a077a 458/486: rustc-colon-compilation-regexps: improve highlighting.,
ELPA Syncer <=
- [nongnu] elpa/rust-mode 00177f5 461/486: compile-mode integration: add link to code references. (#391), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 5585cf9 477/486: rust-mode: Cosmetics, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 3fa8f0b 479/486: Add non-empty commentary section, slightly reword summary, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 7ff04a8 337/486: Merge pull request #234 from jjwest/master, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 70ff9a0 421/486: electric-pair-mode: prevent self-insert of `>' when already inserted. (#337), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 4fd637c 428/486: rust-insert-dbg: handle the case of string literals. (#342), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 844bb51 429/486: add support for "async fn", ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 63ec74c 434/486: Enforce use of spaces for indentation and cleanup whitespace (#353), ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode a36c96a 435/486: integrate rustfmt error messages, ELPA Syncer, 2021/08/07
- [nongnu] elpa/rust-mode 8665005 436/486: Introduce constant for *rustfmt*., ELPA Syncer, 2021/08/07