summaryrefslogtreecommitdiff
path: root/rust-mode.el
diff options
context:
space:
mode:
Diffstat (limited to 'rust-mode.el')
-rw-r--r--rust-mode.el17
1 files changed, 10 insertions, 7 deletions
diff --git a/rust-mode.el b/rust-mode.el
index eec6057..773251d 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -222,12 +222,14 @@ Use idomenu (imenu with `ido-mode') for best mileage.")
See `prettify-symbols-compose-predicate'."
(and (fboundp 'prettify-symbols-default-compose-p)
(prettify-symbols-default-compose-p start end match)
- ;; Make sure there is a space before || as it is also used for
- ;; functions with 0 arguments.
- (not (and (string= match "||")
- (save-excursion
- (goto-char start)
- (looking-back "\\(?:\\<move\\|=\\) *"))))))
+ ;; Make sure || is not a closure with 0 arguments and && is not
+ ;; a double reference.
+ (pcase match
+ ("||" (not (save-excursion
+ (goto-char start)
+ (looking-back "\\(?:\\<move\\|[[({:=,;]\\) *"))))
+ ("&&" (char-equal (char-after end) ?\s))
+ (_ t))))
;;; Mode
@@ -465,7 +467,8 @@ Does not match type annotations of the form \"foo::<\"."
;; Question mark operator
("\\?" . 'rust-question-mark)
- ("\\(&\\)'?\\<" 1 'rust-ampersand-face)
+ ("\\(&+\\)\\(?:'\\(?:\\<\\|_\\)\\|\\<\\|[[({:*_|]\\)"
+ 1 'rust-ampersand-face)
)
;; Ensure we highlight `Foo` in `struct Foo` as a type.