From b9d3549810465aae90c5917b943e0393d6519485 Mon Sep 17 00:00:00 2001 From: Christophe Troestler Date: Mon, 11 Sep 2023 15:32:57 +0200 Subject: [PATCH] Add prettify configuration to rust-ts-mode Content-Type: text/plain; charset="utf-8" * lisp/progmodes/rust-ts-mode.el: Add prettify configuration to the mode. --- lisp/progmodes/rust-ts-mode.el | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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 @@ rust-ts-mode-indent-offset :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 @@ rust-ts-mode--syntax-propertize (?< '(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 @@ rust-ts-mode 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) -- 2.40.1