public int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
            {
                if (pguidCmdGroup == VSConstants.VSStd2K)
                {
                    switch ((VSConstants.VSStd2KCmdID)nCmdID)
                    {
                    case VSConstants.VSStd2KCmdID.SHOWCONTEXTMENU:
                        _vsReplWindow.ShowContextMenu();
                        return(VSConstants.S_OK);

                    case VSConstants.VSStd2KCmdID.TYPECHAR:
                        char typedChar = (char)(ushort)Marshal.GetObjectForNativeVariant(pvaIn);
                        if (!_vsReplWindow._replWindow.CaretInInputRegion)
                        {
                            _vsReplWindow.EditorOperations.MoveToEndOfDocument(false);
                        }
                        _vsReplWindow.EditorOperations.InsertText(typedChar.ToString());
                        return(VSConstants.S_OK);

                    case VSConstants.VSStd2KCmdID.PASTE:
                        break;
                    }
                }
                else if (pguidCmdGroup == VSConstants.GUID_VSStandardCommandSet97)
                {
                    switch ((VSConstants.VSStd97CmdID)nCmdID)
                    {
                    case VSConstants.VSStd97CmdID.Paste:
                        // move the cursor into a valid input region and then paste.
                        if (!_vsReplWindow._replWindow.CaretInInputRegion)
                        {
                            _vsReplWindow.EditorOperations.MoveToEndOfDocument(false);
                        }

                        _vsReplWindow.EditorOperations.Paste();
                        return(VSConstants.S_OK);
                    }
                }

                return(_nextTarget.Exec(ref pguidCmdGroup, nCmdID, nCmdexecopt, pvaIn, pvaOut));
            }