summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rust-mode.el45
1 files changed, 22 insertions, 23 deletions
diff --git a/rust-mode.el b/rust-mode.el
index 780474f..4bb1bcb 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -15,7 +15,9 @@
;;; Code:
-(eval-when-compile (require 'rx))
+(eval-when-compile
+ (require 'rx)
+ (require 'subr-x))
(defvar rust-load-optional-libraries t
"Whether loading `rust-mode' also loads optional libraries.
@@ -948,12 +950,11 @@ and end."
(defun rust-string-interpolation-matcher (limit)
"Match next Rust interpolation marker before LIMIT and set match data if found.
Returns nil if not within a Rust string."
- (when (rust-in-str)
- (let ((match (rust-next-string-interpolation limit)))
- (when match
- (set-match-data match)
- (goto-char (cadr match))
- match))))
+ (when-let (((rust-in-str))
+ (match (rust-next-string-interpolation limit)))
+ (set-match-data match)
+ (goto-char (cadr match))
+ match))
(defun rust-syntax-class-before-point ()
(when (> (point) 1)
@@ -976,19 +977,18 @@ Returns nil if not within a Rust string."
;; We need to be able to back up past the Fn(args) -> RT form as well. If
;; we're looking back at this, we want to end up just after "Fn".
((member (char-before) '(?\] ?\) ))
- (let* ((is-paren (rust-looking-back-str ")"))
- (dest (save-excursion
- (backward-sexp)
- (rust-rewind-irrelevant)
- (or
- (when (rust-looking-back-str "->")
- (backward-char 2)
- (rust-rewind-irrelevant)
- (when (rust-looking-back-str ")")
- (backward-sexp)
- (point)))
- (and is-paren (point))))))
- (when dest
+ (let ((is-paren (rust-looking-back-str ")")))
+ (when-let ((dest (save-excursion
+ (backward-sexp)
+ (rust-rewind-irrelevant)
+ (or
+ (when (rust-looking-back-str "->")
+ (backward-char 2)
+ (rust-rewind-irrelevant)
+ (when (rust-looking-back-str ")")
+ (backward-sexp)
+ (point)))
+ (and is-paren (point))))))
(goto-char dest))))))
(defun rust-rewind-to-decl-name ()
@@ -1365,9 +1365,8 @@ whichever comes first."
(defun rust-syntax-propertize (start end)
"A `syntax-propertize-function' to apply properties from START to END."
(goto-char start)
- (let ((str-start (rust-in-str-or-cmnt)))
- (when str-start
- (rust--syntax-propertize-raw-string str-start end)))
+ (when-let ((str-start (rust-in-str-or-cmnt)))
+ (rust--syntax-propertize-raw-string str-start end))
(funcall
(syntax-propertize-rules
;; Character literals.