private boolean doCompleteOptionValue(InvocationProviders invocationProviders, AeshCompleteOperation completeOperation,
ProcessedOption currentOption, ParsedWord.Status selectedWordStatus) {
String value = currentOption.getLastValue();
if(value == null || currentOption.getEndsWithSeparator())
value = "";
if(currentOption.completer() != null && currentOption.hasValue() &&
currentOption.activator().isActivated(new ParsedCommand(parser.getProcessedCommand()))) {
CompleterInvocation completions =
invocationProviders.getCompleterProvider().enhanceCompleterInvocation(
new CompleterData(completeOperation.getContext(), value, parser.getCommand()));
currentOption.completer().complete(completions);
completeOperation.addCompletionCandidatesTerminalString(completions.getCompleterValues());
verifyCompleteValue(completeOperation, completions, value, selectedWordStatus, currentOption);
}
else if(currentOption.getDefaultValues().size() > 0) {
CompleterInvocation completions =
invocationProviders.getCompleterProvider().enhanceCompleterInvocation(
new CompleterData(completeOperation.getContext(), value, parser.getCommand()));
new DefaultValueOptionCompleter(currentOption.getDefaultValues()).complete(completions);
completeOperation.addCompletionCandidatesTerminalString(completions.getCompleterValues());
verifyCompleteValue(completeOperation, completions, value, selectedWordStatus, currentOption);
}
else if(!currentOption.hasValue()) {
completeOperation.doAppendSeparator(true);
}
return completeOperation.getCompletionCandidates().size() > 0;
}