void EditLoop()
{
ConsoleKeyInfo cki;
while (!done)
{
ConsoleModifiers mod;
cki = Console.ReadKey(true);
if (cki.Key == ConsoleKey.Escape)
{
cki = Console.ReadKey(true);
mod = ConsoleModifiers.Alt;
}
else
mod = cki.Modifiers;
bool handled = false;
foreach (Handler handler in handlers)
{
ConsoleKeyInfo t = handler.CKI;
if (t.Key == cki.Key && t.Modifiers == mod)
{
handled = true;
handler.KeyHandler();
last_handler = handler.KeyHandler;
break;
}
else if (t.KeyChar == cki.KeyChar && t.Key == ConsoleKey.Zoom)
{
handled = true;
handler.KeyHandler();
last_handler = handler.KeyHandler;
break;
}
}
if (handled)
{
if (searching != 0)
{
if (last_handler != CmdReverseSearch)
{
searching = 0;
SetPrompt(prompt);
}
}
continue;
}
if (cki.KeyChar != (char)0)
HandleChar(cki.KeyChar);
}
}