1
0
mirror of https://github.com/janet-lang/janet synced 2025-05-05 17:04:15 +00:00

Add toggle macro.

This commit is contained in:
bakpakin 2022-05-12 15:36:29 -05:00
parent 5b2a402930
commit e0b7533c39

View File

@ -75,6 +75,11 @@
[name & more] [name & more]
~(var ,name :private ,;more)) ~(var ,name :private ,;more))
(defmacro toggle
"Set a value to its boolean inverse. Same as `(set value (not value))`."
[value]
~(set ,value (,not ,value)))
(defn defglobal (defn defglobal
"Dynamically create a global def." "Dynamically create a global def."
[name value] [name value]
@ -2950,7 +2955,7 @@
:italics ["*" "*"] :italics ["*" "*"]
:bold ["**" "**"]})) :bold ["**" "**"]}))
(def modes @{}) (def modes @{})
(defn toggle [mode] (defn toggle-mode [mode]
(def active (get modes mode)) (def active (get modes mode))
(def delims (get delimiters mode)) (def delims (get delimiters mode))
(put modes mode (not active)) (put modes mode (not active))
@ -3060,7 +3065,7 @@
(def token @"") (def token @"")
(var token-length 0) (var token-length 0)
(defn delim [mode] (defn delim [mode]
(def d (toggle mode)) (def d (toggle-mode mode))
(if-not has-color (+= token-length (length d))) (if-not has-color (+= token-length (length d)))
(buffer/push token d)) (buffer/push token d))
(defn endtoken [] (defn endtoken []