1
0
mirror of https://github.com/janet-lang/janet synced 2024-11-25 17:57:17 +00:00

Allow all-bindings and dynamics to search specific env

This commit is contained in:
Adam Schwalm 2019-06-02 10:07:54 -05:00
parent 0a9715a94c
commit 64bf52372a

View File

@ -1820,8 +1820,8 @@ _fiber is bound to the suspended fiber
:source "repl"})) :source "repl"}))
(defn- env-walk (defn- env-walk
[pred] [pred &opt env]
(def env (fiber/getenv (fiber/current))) (default env (fiber/getenv (fiber/current)))
(def envs @[]) (def envs @[])
(do (var e env) (while e (array/push envs e) (set e (table/getproto e)))) (do (var e env) (while e (array/push envs e) (set e (table/getproto e))))
(def ret-set @{}) (def ret-set @{})
@ -1832,14 +1832,16 @@ _fiber is bound to the suspended fiber
(sort (keys ret-set))) (sort (keys ret-set)))
(defn all-bindings (defn all-bindings
"Get all symbols available in the current environment." "Get all symbols available in an enviroment. Defaults to the current
[] fiber's environment."
(env-walk symbol?)) [&opt env]
(env-walk symbol? env))
(defn all-dynamics (defn all-dynamics
"Get all dynamic bindings in the current fiber." "Get all dynamic bindings in an environment. Defaults to the current
[] fiber's environment."
(env-walk keyword?)) [&opt env]
(env-walk keyword? env))
# Clean up some extra defs # Clean up some extra defs
(put _env 'process/opts nil) (put _env 'process/opts nil)