public bool TryTabComplete(RichCommandLineContext cliContext)
{
var powerArgsContext = ConvertContext(this.Definition, cliContext);
bool oldHookWon = false;
string completion = null;
foreach (var completionSource in oldHooks)
{
if (completionSource is ITabCompletionSourceWithContext)
{
if (((ITabCompletionSourceWithContext)completionSource).TryComplete(powerArgsContext.Shift, powerArgsContext.PreviousToken, powerArgsContext.CompletionCandidate, out completion))
{
oldHookWon = true;
break;
}
}
else
{
if (completionSource.TryComplete(powerArgsContext.Shift, powerArgsContext.CompletionCandidate, out completion))
{
oldHookWon = true;
break;
}
}
}
if (oldHookWon == false)
{
foreach (var completionSource in newHooks)
{
if (completionSource.TryComplete(powerArgsContext, out completion))
{
break;
}
}
}
if (completion != null)
{
cliContext.CompleteCurrentToken(cliContext.CurrentToken, new ConsoleString(completion));
return true;
}
else
{
return false;
}
}