示例#1
0
        public string Edit(string prompt, string initial)
        {
            edit_thread             = Thread.CurrentThread;
            searching               = 0;
            Console.CancelKeyPress += InterruptEdit;

            done = false;
            history.CursorToEnd();
            max_rendered = 0;

            Prompt       = prompt;
            shown_prompt = prompt;
            InitText(initial);
            history.Append(initial);

            do
            {
                try {
                    EditLoop();
                } catch (ThreadAbortException) {
                    searching = 0;
                    Thread.ResetAbort();
                    Console.WriteLine();
                    SetPrompt(prompt);
                    SetText("");
                }
            } while (!done);
            Console.WriteLine();

            Console.CancelKeyPress -= InterruptEdit;

            if (text == null)
            {
                history.Close();
                return(null);
            }

            string result = text.ToString();

            if (UseHistory)
            {
                if (result != "")
                {
                    history.Accept(result);
                }
                else
                {
                    history.RemoveLast();
                }
            }
            return(result);
        }