---
feature_story: FS_72_40_53_00
feature_title: plugin `fill_control` for default values
feature_status: TEST
---

# General idea

When all explicit and implicit values are assigned,
there are still defaults ones which can be assigned
(without interrogating user via Tab-completion on the command line).

# Implementation approaches

*   If it is completion or invocation,
    defaults are simply populated and final search is done in attempt to select smaller `data_envelope` set.

*   If it is argument description, there are options.

    *   On one hand, we want to show both|and:

        *   the selected default
        *   the set of possible args from which default was selected

    *   On the other hand, we want to show final `data_envelope` set
        (which is result of a search with those defaults assigned).

        This is where we perform double search:
        *   before assigning defaults (to collect enum values as they are required by the logic to differentiate args)
        *   after assigning defaults (to select final `data_envelope` set)

        Argument description is supposed to show those defaults.

There should not be branching queries (one assuming some values are given and another without these values):
*   `init_control` (see FS_46_96_59_05) gives non-overrideable pre-set `prop_value`-s<br/>
     for some `prop_name`-s in the next `data_envelope` (before the query).
*   `fill_control` (this FS_72_40_53_00) populates `prop_value`-s for those `prop_name`-s<br/>
     which still have ambiguous values after all arg processing is done (simply to avoid prompting user for that).

Default values are never interrogated on the command line.<br/>
However, they are shown via [FS_72_53_55_13][FS_72_53_55_13] non-default options feature.

# See also

The initial implementation was done as this issue: https://github.com/argrelay/argrelay/issues/8

[FS_72_53_55_13]: FS_72_53_55_13.show_non_default_options.md
