Allow initialization of values for shell completion in callback

Use case is implementing completion for syncthingctl also for
device and folder IDs.
This commit is contained in:
Martchus 2017-09-30 18:42:21 +02:00
parent b7b218c831
commit 46bfbdd829
2 changed files with 5 additions and 1 deletions

View File

@ -1054,6 +1054,9 @@ void ArgumentParser::printBashCompletion(int argc, const char *const *argv, unsi
cout << "COMPREPLY=(";
// -> completions for parameter values
for (const Argument *arg : relevantPreDefinedValues) {
if (arg->valueCompletionBehaviour() & ValueCompletionBehavior::InvokeCallback && arg->m_callbackFunction) {
arg->m_callbackFunction(arg->isPresent() ? arg->m_occurrences.front() : ArgumentOccurrence(Argument::varValueCount));
}
if (arg->preDefinedCompletionValues()) {
bool appendEquationSign = arg->valueCompletionBehaviour() & ValueCompletionBehavior::AppendEquationSign;
if (argc && currentWordIndex <= lastSpecifiedArgIndex && opening) {

View File

@ -74,7 +74,8 @@ enum class ValueCompletionBehavior : unsigned char {
Files = 4, /**< files */
Directories = 8, /**< directories */
FileSystemIfNoPreDefinedValues = 16, /**< files and directories but only if no values have been assigned (default behavior) */
AppendEquationSign = 32 /**< an equation sign is appended to values which not contain an equation sign already */
AppendEquationSign = 32, /**< an equation sign is appended to values which not contain an equation sign already */
InvokeCallback = 64, /**< whether to invoke the callback before reading pre-defined values */
};
/// \cond