Feature:
highlighting and evaluation of dependency "conditional" attribute.
Background
A prominent feature in Format 3 packages, it allows toggling dependencies based on the evaluated value of the conditional. In contract to the version restriction attributes, this feature actually relaxes the rules rather than making them more strict.
Details
[x] A brand new language for the conditional attribute will be added. It is rather simple to implement and REP 149 describes it in full. It is also used in some of the base ROS packages. This language will have no associated file (if possible) and will be directly injected into the tag.
[x] This internal language should also have color options added like other languages.
[x] The language should suggest known env variables when writing $
[x] The language should allow completing the basic keywords: and,or
[x] Tags should have a new attribute completion for "condition"
[x] parenthesis should be matched using the brace matcher
[x] fragments should be annotated with the error and with the correct fixes
Toggling tags:
[x] After completing (#28), and given that the file is in format 3, the annotation for invalid dependency version could be toggled off by the conditional.
[x] if the format is 3 or higher, highlight turned off tags in a special configurable color that is by default the "unused" color.
[x] ignored tags should not affect package completion.
[x] If the file is in a lower format, use an inspection on conditionals to point out they are not considered.
Feature: highlighting and evaluation of dependency "conditional" attribute.
Background A prominent feature in Format 3 packages, it allows toggling dependencies based on the evaluated value of the conditional. In contract to the version restriction attributes, this feature actually relaxes the rules rather than making them more strict.
Details