Background
The driver behind format 3, this feature allows grouping dependencies in an extendable manner, better than what meta-packages offer. A good example for this is message generators, where if you would want java generators, you would add them to a group called "message_generation". Then a package that needs this group could say that it uses it. Note that groups are not physical objects, they "act like namespaces". Since they are metaphysical, you can depend on a group without declaring it.
Details available on REP 149
Details
structure:
the tag names are: _groupdepend (dependency on group), and _member_ofgroup (membership of a group)
the value is the group the package is member of or depends on. Groups do not need to be declared, they are "created" when a their first member declares membership of that group.
in both tags, the "condition" attribute created in (#31) may be used (optional).
since groups are metaphysical, if their names are the same, the groups are the same.
completion:
[x] add auto-completion for new tag names.
[x] add completion for the "condition" attribute in both tags.
[x] in tag value completion, look up all groups that are either depended on already or have a member and suggest them.
annotation:
[x] if the format is lower than 3 and either group tag exists, annotate it as an error.
[x] if the condition in the tag resolves to false, it should be annotated as ignored with the special highlighting defined for that purpose.
[x] If the tag points a dependency to a group that doesn't have any members, point it out in an inspection.
[x] Since group tags are the final tags in format 3 (outside export), annotate unknown tags outside export and suggest moving them into the export tag.
[x] every package can only depend on each group/ be member of each group once. Duplicate tags should be annotated accordingly (with consideration for conditions)
[x] empty group tags should be annotated accordingly
references:
[x] a group value references all the group members (multi-resolve), which can be browed by CTRL+Clicking. Navigation will jump to the value of the group tag.
[x] the usages of the group value are all the packages that depend on the group. Navigation will jump to the value of the group tag.
Feature: add support for group dependencies
Background The driver behind format 3, this feature allows grouping dependencies in an extendable manner, better than what meta-packages offer. A good example for this is message generators, where if you would want java generators, you would add them to a group called "message_generation". Then a package that needs this group could say that it uses it. Note that groups are not physical objects, they "act like namespaces". Since they are metaphysical, you can depend on a group without declaring it. Details available on REP 149
Details