예제 #1
0
        private static CommandResult CmdClearScreen(ICommandTarget target)
        {
            TerminalDocument doc = TerminalCommandTarget.AsTerminalDocument(target);

            if (doc == null)
            {
                return(CommandResult.Ignored);
            }

            TerminalControl tc = TerminalCommandTarget.AsTerminalControl(target);

            lock (doc) {
                GLine l      = doc.TopLine;
                int   top_id = l.ID;
                int   limit  = l.ID + doc.TerminalHeight;
                while (l != null && l.ID < limit)
                {
                    l.Clear();
                    l = l.NextLine;
                }
                doc.CurrentLineNumber = top_id;
                doc.CaretColumn       = 0;
                doc.InvalidatedRegion.InvalidatedAll = true;
                if (tc != null)
                {
                    tc.ITextSelection.Clear();
                    tc.Invalidate();
                }
            }
            return(CommandResult.Succeeded);
        }
예제 #2
0
        private static CommandResult CmdClearBuffer(ICommandTarget target)
        {
            TerminalDocument doc = TerminalCommandTarget.AsTerminalDocument(target);

            if (doc == null)
            {
                return(CommandResult.Ignored);
            }

            ITerminalControlHost session = TerminalCommandTarget.AsTerminal(target);
            TerminalControl      tc      = TerminalCommandTarget.AsTerminalControl(target);

            lock (doc) {
                doc.Clear();
                session.Terminal.AdjustTransientScrollBar();
                if (tc != null)
                {
                    tc.ITextSelection.Clear();
                    tc.Invalidate();
                }
            }
            return(CommandResult.Succeeded);
        }