Closed rodweb closed 2 years ago
Hi @rodweb, that is a cool idea, it would be great to have something like this integrated directly into verb-mode
.
Some thoughts:
verb-mode
, without having to add a separate minor mode.verb-environments
to '(("default" . nil)
by default?(use-package verb-env
:straight (verb-env :host github :repo "rodweb/verb-env" :branch "main")
:hook (verb-mode . verb-env-mode)
:custom
(verb-env-default "development")
(verb-env-environments '(("development" . ((api-url . "http://localhost:5000/")
(api-token . "dev-token")
(elasticsearch-url . "http://localhost:9200/")
(elasticsearch-index . "dev_index")))
("production" . ((api-url . "https://api.com/")
(api-token . "prod-token")
(elasticsearch-url . "http://localhost:9300/")
(elasticsearch-index . "prod_index"))))))
For example, do you mean having just api-url
and api-token
as Org properties for the API Verb file? If so, I like the idea. It would be cleaner than what I have now.
But I'm not sure how I'd specify values for multiple environments though.
What I mean is:
By setting the verb-env-environments
, you are effectively creating a set of environments that are shared among all .org
files you open. I can imagine that in some cases, some environments would not be applicable to some files: for example, if I am working on two APIs, Foo and Bar, and each one has a development and production environment (for a total of 4 environments), then you would never use the Foo environments when you open the file for Bar (because the values themselves wouldn't make sense, and even the set of variables names could be different).
For this reason, I imagined that then it would make sense to define environments per file. What mechanism we could use for that, I am not sure, but obviously we could discuss it.
However, if you find that the workflow of having a set of environments that are accessible/usable from any .org
file useful and productive, I say we go for it! In that case, I would take back what I said about the default
environment. It would be better to allow users not have to define a default one, and just handle the case of no environment activated manually.
I have a usability question though: if I activate an environment that defines a variable foobar
, and then I set that variable via verb-set-var
, would it just write the variable to the buffer-local variables I'm using, or also actually write the variable back to the environment I activated?
For this reason, I imagined that then it would make sense to define environments per file.
For my current needs, I'd rather have it set per file too.
I have a usability question though: if I activate an environment that defines a variable
foobar
, and then I set that variable viaverb-set-var
, would it just write the variable to the buffer-local variables I'm using, or also actually write the variable back to the environment I activated?
It would be nice to have an interface like org-set-property
to write back, but I can see this behaviour being a defcustom
too.
I currently do not have the bandwidth to tackle this, however PRs are welcome of course.
Hello,
First of all, thanks for the great package! It's been a pleasure to work with it.
To give you some context, I'm coming from Postman, which has the concept of Environments to manage sets of related variables.
The most common use case is having a different set of values for
development
andproduction
.So I'd like to introduce the concept of environments to
verb-mode
.I made a simple minor mode for myself to test it out and I'd be willing to make a proper PR if you like the idea.