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)); }