private string autoCompleteParameters(string incompleteCommand) { var splitBySpace = incompleteCommand.Split(space, StringSplitOptions.RemoveEmptyEntries); if (splitBySpace.Length == 0 || splitBySpace.Length > 2) { return(incompleteCommand); } var command = splitBySpace[0]; var parameterPrefixes = ConsoleCommands.ParameterPrefixesFor(command); if (parameterPrefixes == null) { logger.Info($"> {incompleteCommand}"); logger.Warn("No parameters for command known."); return(incompleteCommand); } var parameter = splitBySpace.Length > 1 ? splitBySpace[1] : ""; var extended = parameterPrefixes.ExtendPrefix(parameter); if (extended == null) { logger.Info($"> {incompleteCommand}"); logger.Warn("No matching parameters found."); return(incompleteCommand); } if (parameterPrefixes.Contains(extended)) { return($"{command} {extended} "); } if (extended != parameter) { return($"{command} {extended}"); } var availableParameters = parameterPrefixes.AllKeys(extended); logger.Info($"> {command} {extended}"); foreach (var p in availableParameters) { logger.Info(p); } return($"{command} {extended}"); }