summaryrefslogtreecommitdiff
path: root/rust-mode.el
diff options
context:
space:
mode:
authorJonas Bernoulli <jonas@bernoul.li>2021-03-29 19:04:00 +0200
committerbrotzeit <brotzeitmacher@gmail.com>2021-04-23 13:57:07 +0200
commit9e03890863fc1c1aca696e576d0a5b1daf1eed01 (patch)
tree4b99dba5b4be30d64fcc82bafd8f1b0674c920ca /rust-mode.el
parent5585cf95590a3950262c4b3ca9390980de713b3a (diff)
downloadrust-mode-9e03890863fc1c1aca696e576d0a5b1daf1eed01.tar.gz
Create rust-compile.el from existing code
For the time being `require' the new library from "rust-mode.el". In the mid-term we should stop doing that, so that users can load it if and only if they want to do so.
Diffstat (limited to 'rust-mode.el')
-rw-r--r--rust-mode.el76
1 files changed, 2 insertions, 74 deletions
diff --git a/rust-mode.el b/rust-mode.el
index 21fdd24..221259c 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -14,9 +14,8 @@
;;; Code:
-(eval-when-compile (require 'rx)
- (require 'compile)
- (require 'url-vars))
+(eval-when-compile (require 'rx))
+(eval-when-compile (require 'url-vars))
(require 'json)
(require 'thingatpt)
@@ -1973,77 +1972,6 @@ Return the created process."
(or (rust--format-error-handler)
(message "rustfmt detected problems, see *rustfmt* for more."))))))
-;;; Compilation
-
-(defvar rustc-compilation-location
- (let ((file "\\([^\n]+\\)")
- (start-line "\\([0-9]+\\)")
- (start-col "\\([0-9]+\\)"))
- (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 ((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.")
-
-(defvar rustc-refs-compilation-regexps
- (let ((re "^\\([0-9]+\\)[[:space:]]*|"))
- (cons re '(nil 1 nil 0 1)))
- "Specifications for matching code references in rustc invocations.
-See `compilation-error-regexp-alist' for help on their format.")
-
-;; Match test run failures and panics during compilation as
-;; compilation warnings
-(defvar cargo-compilation-regexps
- '("^\\s-+thread '[^']+' panicked at \\('[^']+', \\([^:]+\\):\\([0-9]+\\)\\)"
- 2 3 nil nil 1)
- "Specifications for matching panics in cargo test invocations.
-See `compilation-error-regexp-alist' for help on their format.")
-
-(defun rustc-scroll-down-after-next-error ()
- "In the new style error messages, the regular expression
-matches on the file name (which appears after `-->`), but the
-start of the error appears a few lines earlier. This hook runs
-after `next-error' (\\[next-error]); it simply scrolls down a few lines in
-the compilation window until the top of the error is visible."
- (save-selected-window
- (when (eq major-mode 'rust-mode)
- (select-window (get-buffer-window next-error-last-buffer 'visible))
- (when (save-excursion
- (beginning-of-line)
- (looking-at " *-->"))
- (let ((start-of-error
- (save-excursion
- (beginning-of-line)
- (while (not (looking-at "^[a-z]+:\\|^[a-z]+\\[E[0-9]+\\]:"))
- (forward-line -1))
- (point))))
- (set-window-start (selected-window) start-of-error))))))
-
-(eval-after-load 'compile
- '(progn
- (add-to-list 'compilation-error-regexp-alist-alist
- (cons 'rustc-refs rustc-refs-compilation-regexps))
- (add-to-list 'compilation-error-regexp-alist 'rustc-refs)
- (add-to-list 'compilation-error-regexp-alist-alist
- (cons 'rustc rustc-compilation-regexps))
- (add-to-list 'compilation-error-regexp-alist 'rustc)
- (add-to-list 'compilation-error-regexp-alist-alist
- (cons 'rustc-colon rustc-colon-compilation-regexps))
- (add-to-list 'compilation-error-regexp-alist 'rustc-colon)
- (add-to-list 'compilation-error-regexp-alist-alist
- (cons 'cargo cargo-compilation-regexps))
- (add-to-list 'compilation-error-regexp-alist 'cargo)
- (add-hook 'next-error-hook 'rustc-scroll-down-after-next-error)))
-
;;; Secondary Commands
(defun rust-playpen-region (begin end)