Thanks @eed3si9n for your work on this.
At this point I favor the new
/ syntax if I get the direction of this proposal correctly.
(1) No Nonsensical scopes
From my understanding the
/ syntax doesn’t allow arbitrary combinations of scopes, but only a well defined set. E.g.
root / Compile / compile := ...
Compile / compile := ...
// fails to compile
compile / Compile := ...
Which will get rid of various typos and confusing errors.
(2) Readability & Usability
Tab completion works more naturally IMHO and when all axis are spelled out things get really clear
where settings are applied.
I’m not sure if this is a good idea, but things like this would be possible
// scope multiple keys to a scope
Compile / Seq(
name := ...,
test := ...
But which is nice for more nested settings, e.g.
Debian / assembly / Seq (
name := ...,
assemblyJar := ...
(3) Visualizing == Using
Display all values for a key would look as natural as writing it. E.g. with some kind of “inspect scopes” command
> inspectScopes compile
root / Compile / compile := Defined at Defaults.scala:271
root / compile := Defined at Defaults.scala:271
root / Test / compile := Defined at Defaults.scala:271
IMHO this would look a bit strange and unreadable with the
Looking forward to see this UX improvement in SBT. Thanks a lot