emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/raku-mode 14f9b9bba0 2/2: Merge pull request #60 from Raku


From: ELPA Syncer
Subject: [nongnu] elpa/raku-mode 14f9b9bba0 2/2: Merge pull request #60 from Raku/variable-colors
Date: Mon, 29 Apr 2024 07:00:57 -0400 (EDT)

branch: elpa/raku-mode
commit 14f9b9bba08c0bbb7f3895380d0b1a9feb7a168d
Merge: 977b14a7c1 7e8284b37c
Author: Altai-man <alexander.kiryuhin@gmail.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #60 from Raku/variable-colors
    
    Split variable name faces into different types
---
 raku-font-lock.el | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 65 insertions(+), 2 deletions(-)

diff --git a/raku-font-lock.el b/raku-font-lock.el
index 0507a1fabe..0a7400ff1c 100644
--- a/raku-font-lock.el
+++ b/raku-font-lock.el
@@ -94,6 +94,22 @@
   "Face for variable names in Raku."
   :group 'raku-faces)
 
+(defface raku-var-name-mu '((t :inherit font-lock-variable-name-face))
+  "Face for mu variable names in Raku."
+  :group 'raku-faces)
+
+(defface raku-var-name-positional '((t :inherit font-lock-variable-name-face))
+  "Face for positional variable names in Raku."
+  :group 'raku-faces)
+
+(defface raku-var-name-associative '((t :inherit font-lock-variable-name-face))
+  "Face for associative variable names in Raku."
+  :group 'raku-faces)
+
+(defface raku-var-name-callable '((t :inherit font-lock-variable-name-face))
+  "Face for callable variable names in Raku."
+  :group 'raku-faces)
+
 (defface raku-version '((t :inherit font-lock-constant-face))
   "Face for version literals in Raku."
   :group 'raku-faces)
@@ -131,6 +147,38 @@
                                    (1+ (regex ,rx-identifier) "::"))))
                    (group (or (or digit (char "/!¢"))
                               (and (regex ,rx-identifier) symbol-end))))))
+        (variable-mu
+         . ,(rx-to-string
+             `(and (group (1+ (char "$")))
+                   (group (opt (char ".^*?=!~:")))
+                   (group (opt (or (and "::" (0+ (regex ,rx-identifier) "::"))
+                                   (1+ (regex ,rx-identifier) "::"))))
+                   (group (or (or digit (char "/!¢"))
+                              (and (regex ,rx-identifier) symbol-end))))))
+        (variable-positional
+         . ,(rx-to-string
+             `(and (group (1+ (char "@")))
+                   (group (opt (char ".^*?=!~:")))
+                   (group (opt (or (and "::" (0+ (regex ,rx-identifier) "::"))
+                                   (1+ (regex ,rx-identifier) "::"))))
+                   (group (or (or digit (char "/!¢"))
+                              (and (regex ,rx-identifier) symbol-end))))))
+        (variable-associative
+         . ,(rx-to-string
+             `(and (group (1+ (char "%")))
+                   (group (opt (char ".^*?=!~:")))
+                   (group (opt (or (and "::" (0+ (regex ,rx-identifier) "::"))
+                                   (1+ (regex ,rx-identifier) "::"))))
+                   (group (or (or digit (char "/!¢"))
+                              (and (regex ,rx-identifier) symbol-end))))))
+        (variable-callable
+         . ,(rx-to-string
+             `(and (group (1+ (char "&")))
+                   (group (opt (char ".^*?=!~:")))
+                   (group (opt (or (and "::" (0+ (regex ,rx-identifier) "::"))
+                                   (1+ (regex ,rx-identifier) "::"))))
+                   (group (or (or digit (char "/!¢"))
+                              (and (regex ,rx-identifier) symbol-end))))))
         (reduce-operator
          . ,(rx-to-string
              `(and (0+ (any "RSXZ\["))
@@ -594,11 +642,26 @@ LIMIT can be used to bound the search."
                       (or (any ",\)\}") (symbol "where")))))
      1 'raku-sigil)
     ;; $foo @Bla::Hlagh $.bar $?CLASS
-    (,(raku-rx variable)
+    (,(raku-rx variable-mu)
+     (1 'raku-sigil)
+     (2 'raku-twigil)
+     (3 'raku-var-package)
+     (4 'raku-var-name-mu))
+    (,(raku-rx variable-positional)
+     (1 'raku-sigil)
+     (2 'raku-twigil)
+     (3 'raku-var-package)
+     (4 'raku-var-name-positional))
+    (,(raku-rx variable-associative)
+     (1 'raku-sigil)
+     (2 'raku-twigil)
+     (3 'raku-var-package)
+     (4 'raku-var-name-associative))
+    (,(raku-rx variable-callable)
      (1 'raku-sigil)
      (2 'raku-twigil)
      (3 'raku-var-package)
-     (4 'raku-var-name))
+     (4 'raku-var-name-callable))
     ;; (-) R=> [*] X~ »+«
     (raku-match-metaoperator 0 'raku-operator)
     ;; v6.0.0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]