From: Christophe Troestler Date: Mon, 11 Sep 2023 13:32:57 +0000 (+0200) Subject: Add prettify-symbols configuration to 'rust-ts-mode' X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e686fb9de39657ac97b33c1fe74c3328d0fb90fd;p=emacs.git Add prettify-symbols configuration to 'rust-ts-mode' * lisp/progmodes/rust-ts-mode.el (rust-ts-mode-prettify-symbols-alist): New variable. (rust-ts-mode--prettify-symbols-compose-p): New function. (rust-ts-mode): Use it. --- diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el index 999c1d7ae96..88344934e49 100644 --- a/lisp/progmodes/rust-ts-mode.el +++ b/lisp/progmodes/rust-ts-mode.el @@ -48,6 +48,12 @@ :safe 'integerp :group 'rust) +(defvar rust-ts-mode-prettify-symbols-alist + '(("&&" . ?∧) ("||" . ?∨) + ("<=" . ?≤) (">=" . ?≥) ("!=" . ?≠) + ("INFINITY" . ?∞) ("->" . ?→) ("=>" . ?⇒)) + "Value for `prettify-symbols-alist' in `rust-ts-mode'.") + (defvar rust-ts-mode--syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?+ "." table) @@ -386,6 +392,19 @@ delimiters < and >'s." (?< '(4 . ?>)) (?> '(5 . ?<)))))))) +(defun rust-ts-mode--prettify-symbols-compose-p (start end match) + "Return true iff the symbol MATCH should be composed. +See `prettify-symbols-compose-predicate'." + (and (fboundp 'prettify-symbols-default-compose-p) + (prettify-symbols-default-compose-p start end match) + ;; Make sure || is not a closure with 0 arguments and && is not + ;; a double reference. + (pcase match + ((or "||" "&&") + (string= (treesit-node-field-name (treesit-node-at (point))) + "operator")) + (_ t)))) + ;;;###autoload (define-derived-mode rust-ts-mode prog-mode "Rust" "Major mode for editing Rust, powered by tree-sitter." @@ -411,6 +430,11 @@ delimiters < and >'s." number type) ( bracket delimiter error function operator property variable))) + ;; Prettify configuration + (setq prettify-symbols-alist rust-ts-mode-prettify-symbols-alist) + (setq prettify-symbols-compose-predicate + #'rust-ts-mode--prettify-symbols-compose-p) + ;; Imenu. (setq-local treesit-simple-imenu-settings `(("Module" "\\`mod_item\\'" nil nil)