public void Handle(RichCommandLineContext context) { if (context.KeyPressed.Modifiers.HasFlag(ConsoleModifiers.Control) == false) { return; } context.Intercept = true; context.RefreshTokenInfo(); if (ContextAssistProvider == null || ContextAssistProvider.CanAssist(context) == false) { return; } int left = context.Console.CursorLeft; int top = context.Console.CursorTop; ContextAssistResult result = ContextAssistResult.NoOp; try { context.Console.WriteLine("\n"); result = ContextAssistProvider.DrawMenu(context); while (result.IsTerminal == false) { var key = context.Console.ReadKey(true); result = ContextAssistProvider.OnKeyboardInput(context, key); } } finally { ContextAssistProvider.ClearMenu(context); context.Console.CursorLeft = left; context.Console.CursorTop = top; } if (result.StatusCode == ContextAssistResultStatusCode.Success) { context.ClearConsole(); context.Console.CursorLeft = left; context.Console.CursorTop = top; context.Buffer.Clear(); context.Buffer.AddRange(result.NewBuffer); context.RefreshConsole(result.ConsoleRefreshLeftOffset, 0); } }