Ejemplo n.º 1
0
        public void GetNonKeypadEquivalent_PreserveModifiers()
        {
            var keyInput   = KeyInputUtil.ApplyModifiersToVimKey(VimKey.KeypadDivide, KeyModifiers.Control);
            var equivalent = KeyInputUtil.GetNonKeypadEquivalent(keyInput);

            Assert.Equal(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Forwardslash, KeyModifiers.Control), equivalent.Value);
        }
Ejemplo n.º 2
0
            public void Issue328()
            {
                Assert.True(_map.MapWithNoRemap("<S-SPACE>", "<ESC>", KeyRemapMode.Insert));
                var res = _map.GetKeyMapping(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Space, KeyModifiers.Shift), KeyRemapMode.Insert);

                Assert.Equal(KeyInputUtil.EscapeKey, res.Single());
            }
Ejemplo n.º 3
0
 public void StandardCommand_ExtendSelectionRight()
 {
     Create("dog", "cat", "tree");
     _simulation.SimulateStandardKeyMappings = true;
     _simulation.Run(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Right, KeyModifiers.Shift));
     Assert.Equal(ModeKind.VisualCharacter, _vimBuffer.ModeKind);
 }
Ejemplo n.º 4
0
            public void DontPreserveModifiers()
            {
                var keyInput   = KeyInputUtil.ApplyModifiersToVimKey(VimKey.KeypadDivide, KeyModifiers.Control);
                var equivalent = KeyInputUtil.GetNonKeypadEquivalent(keyInput);

                Assert.Equal(KeyInputUtil.CharToKeyInput('/'), equivalent.Value);
            }
Ejemplo n.º 5
0
            public void AlternateControAndShift()
            {
                var keyInputSet = KeyNotationUtil.StringToKeyInputSet(@"<CS-A><CS-Enter>");
                var list        = keyInputSet.KeyInputs.ToList();

                Assert.Equal(KeyInputUtil.CharWithControlToKeyInput('a'), list[0]);
                Assert.Equal(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Enter, KeyModifiers.Control | KeyModifiers.Shift), list[1]);
            }
Ejemplo n.º 6
0
 public void KeyMap_ShiftAndEnter()
 {
     Create("cat", "dog");
     _vimBuffer.Process(":inoremap <S-CR> <Esc>", enter: true);
     _vimBuffer.Process("i");
     _simulation.Run(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Enter, KeyModifiers.Shift));
     Assert.Equal(ModeKind.Normal, _vimBuffer.ModeKind);
 }
Ejemplo n.º 7
0
        public void KeyStroke_WithShiftAndControlModifier()
        {
            var stroke = new KeyStroke(
                KeyInputUtil.CharToKeyInput('#'),
                KeyModifiers.Shift | KeyModifiers.Control);

            Assert.Equal(KeyInputUtil.CharToKeyInput('#'), stroke.KeyInput);
            Assert.Equal(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Pound, KeyModifiers.Shift | KeyModifiers.Control), stroke.AggregateKeyInput);
            Assert.Equal('#', stroke.Char);
        }
Ejemplo n.º 8
0
 public void KeyMap_ShiftAndReturn()
 {
     Create("cat", "dog");
     _vimBuffer.Process(":map <S-RETURN> o<Esc>", enter: true);
     _simulation.Run(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Enter, KeyModifiers.Shift));
     Assert.Equal(3, _textBuffer.CurrentSnapshot.LineCount);
     Assert.Equal("cat", _textBuffer.GetLine(0).GetText());
     Assert.Equal("", _textBuffer.GetLine(1).GetText());
     Assert.Equal("dog", _textBuffer.GetLine(2).GetText());
 }
Ejemplo n.º 9
0
            public void NonCharWithModifierShouldCarryModifier()
            {
                var ki = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Left, KeyModifiers.Shift);

                _mockVimBuffer.Setup(x => x.CanProcess(ki)).Returns(true).Verifiable();
                _mockVimBuffer.Setup(x => x.Process(ki)).Returns(ProcessResult.NewHandled(ModeSwitch.NoSwitch)).Verifiable();

                var arg = CreateKeyEventArgs(Key.Left, ModifierKeys.Shift);

                _processor.KeyDown(arg);
                Assert.True(arg.Handled);
                _mockVimBuffer.Verify();
            }
Ejemplo n.º 10
0
        public void VimKeyAndModifiersToKeyInput1()
        {
            foreach (var cur in Enum.GetValues(typeof(VimKey)).Cast <VimKey>())
            {
                if (cur == VimKey.None || cur == VimKey.RawCharacter)
                {
                    continue;
                }

                var ki = KeyInputUtil.ApplyModifiersToVimKey(cur, KeyModifiers.Control);
                Assert.Equal(cur, ki.Key);
                Assert.Equal(KeyModifiers.Control, ki.KeyModifiers & KeyModifiers.Control);
            }
        }
Ejemplo n.º 11
0
            public void ApplyModifiersControlToAllKeysNonAlpha()
            {
                foreach (var cur in Enum.GetValues(typeof(VimKey)).Cast <VimKey>())
                {
                    if (cur == VimKey.None || cur == VimKey.RawCharacter)
                    {
                        continue;
                    }

                    if (Char.IsLetter(KeyInputUtil.VimKeyToKeyInput(cur).Char))
                    {
                        continue;
                    }

                    var keyInput = KeyInputUtil.ApplyModifiersToVimKey(cur, KeyModifiers.Control);
                    Assert.Equal(cur, keyInput.Key);
                    Assert.Equal(KeyModifiers.Control, keyInput.KeyModifiers & KeyModifiers.Control);
                }
            }
Ejemplo n.º 12
0
 static ReportDesignerUtil()
 {
     // The set of keys which are special handled are defined by the CodeWindow::ProcessKeyMessage inside
     // of Microsoft.ReportDesigner.dll
     SpecialHandledSet.Add(KeyInputUtil.EnterKey);
     SpecialHandledSet.Add(KeyInputUtil.TabKey);
     SpecialHandledSet.Add(KeyInputUtil.EscapeKey);
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Delete));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Back));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.PageUp));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.PageUp, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.PageDown));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.PageDown, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.End));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.End, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.End, KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.End, KeyModifiers.Control | KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Home));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Home, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Home, KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Home, KeyModifiers.Control | KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Left));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Left, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Left, KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Left, KeyModifiers.Control | KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Right));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Right, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Right, KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Right, KeyModifiers.Control | KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Up));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Up, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.VimKeyToKeyInput(VimKey.Down));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToVimKey(VimKey.Down, KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToChar('a', KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToChar('v', KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToChar('x', KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToChar('y', KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToChar('z', KeyModifiers.Control));
     SpecialHandledSet.Add(KeyInputUtil.ApplyModifiersToChar('z', KeyModifiers.Control | KeyModifiers.Shift));
     SpecialHandledSet.Add(KeyInputUtil.CharToKeyInput('\b'));
 }
Ejemplo n.º 13
0
 public void ShiftNumberShouldNotPromote()
 {
     AssertSingle("<S-1>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.Number1, KeyModifiers.Shift));
     AssertSingle("<s-1>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.Number1, KeyModifiers.Shift));
 }
Ejemplo n.º 14
0
 public void AlphaWithControl()
 {
     AssertSingle("<C-x>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.LowerX, KeyModifiers.Control));
     AssertSingle("<c-X>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.UpperX, KeyModifiers.Control));
 }
Ejemplo n.º 15
0
 public void NotationOfFunctionKey()
 {
     AssertSingle("<S-F11>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.F11, KeyModifiers.Shift));
     AssertSingle("<c-F11>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.F11, KeyModifiers.Control));
 }
Ejemplo n.º 16
0
 public void AlphaWithAltIsCaseSensitive()
 {
     AssertSingle("<A-b>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.LowerB, KeyModifiers.Alt));
     AssertSingle("<A-B>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.UpperB, KeyModifiers.Alt));
 }
Ejemplo n.º 17
0
 public void ShiftAndControlModifier()
 {
     AssertSingle("<C-S-A>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.UpperA, KeyModifiers.Control));
 }
Ejemplo n.º 18
0
            private void VerifySpecial(VimKey vimKey, KeyModifiers keyModifiers = KeyModifiers.None)
            {
                var keyInput = KeyInputUtil.ApplyModifiersToVimKey(vimKey, keyModifiers);

                Assert.True(_reportDesignerUtil.IsSpecialHandled(keyInput));
            }
Ejemplo n.º 19
0
 private void AssertMap(Key key, VimKey vimKey)
 {
     AssertMap(key, ModifierKeys.Control, KeyInputUtil.ApplyModifiersToVimKey(vimKey, KeyModifiers.Control));
 }
Ejemplo n.º 20
0
        /// <summary>
        /// Try and convert a Visual Studio 2000 style command into the associated KeyInput and EditCommand items
        /// </summary>
        internal static bool TryConvert(VSConstants.VSStd2KCmdID cmdId, IntPtr variantIn, out KeyInput keyInput, out EditCommandKind kind, out bool isRawText)
        {
            isRawText = false;
            switch (cmdId)
            {
            case VSConstants.VSStd2KCmdID.TYPECHAR:
                if (variantIn == IntPtr.Zero)
                {
                    keyInput = KeyInputUtil.CharToKeyInput(Char.MinValue);
                }
                else
                {
                    var obj = Marshal.GetObjectForNativeVariant(variantIn);
                    var c   = (char)(ushort)obj;
                    keyInput = KeyInputUtil.CharToKeyInput(c);
                }
                kind      = EditCommandKind.UserInput;
                isRawText = true;
                break;

            case VSConstants.VSStd2KCmdID.RETURN:
                keyInput = KeyInputUtil.EnterKey;
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.CANCEL:
                keyInput = KeyInputUtil.EscapeKey;
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.DELETE:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Delete);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.BACKSPACE:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Back);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.LEFT:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Left);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.LEFT_EXT:
            case VSConstants.VSStd2KCmdID.LEFT_EXT_COL:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Left, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.RIGHT:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Right);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.RIGHT_EXT:
            case VSConstants.VSStd2KCmdID.RIGHT_EXT_COL:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Right, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.UP:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Up);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.UP_EXT:
            case VSConstants.VSStd2KCmdID.UP_EXT_COL:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Up, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.DOWN:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Down);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.DOWN_EXT:
            case VSConstants.VSStd2KCmdID.DOWN_EXT_COL:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Down, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.TAB:
                keyInput = KeyInputUtil.TabKey;
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.BACKTAB:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Tab, KeyModifiers.Shift);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.PAGEDN:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.PageDown);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.PAGEDN_EXT:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.PageDown, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.PAGEUP:
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.PageUp);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.PAGEUP_EXT:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.PageUp, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.UNDO:
            case VSConstants.VSStd2KCmdID.UNDONOMOVE:
                // Visual Studio was asked to undo.  This happens when either the undo button
                // was hit or the visual studio key combination bound to the undo command
                // was executed
                keyInput = KeyInput.DefaultValue;
                kind     = EditCommandKind.Undo;
                break;

            case VSConstants.VSStd2KCmdID.REDO:
            case VSConstants.VSStd2KCmdID.REDONOMOVE:
                // Visual Studio was asked to redo.  This happens when either the redo button
                // was hit or the visual studio key combination bound to the redo command
                // was executed
                keyInput = KeyInput.DefaultValue;
                kind     = EditCommandKind.Redo;
                break;

            case VSConstants.VSStd2KCmdID.BOL:
                // Even though there as a HOME value defined, Visual Studio apparently maps the
                // Home key to BOL
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Home);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.BOL_EXT:
            case VSConstants.VSStd2KCmdID.BOL_EXT_COL:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.Home, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.EOL:
                // Even though there as a END value defined, Visual Studio apparently maps the
                // Home key to EOL
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.End);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.EOL_EXT:
            case VSConstants.VSStd2KCmdID.EOL_EXT_COL:
                keyInput = KeyInputUtil.ApplyModifiersToVimKey(VimKey.End, KeyModifiers.Shift);
                kind     = EditCommandKind.VisualStudioCommand;
                break;

            case VSConstants.VSStd2KCmdID.TOGGLE_OVERTYPE_MODE:
                // The <Insert> key is expressed in the toggle overtype mode flag.  In general
                // over write mode is referred to as overtype in the code / documentation
                keyInput = KeyInputUtil.VimKeyToKeyInput(VimKey.Insert);
                kind     = EditCommandKind.UserInput;
                break;

            case VSConstants.VSStd2KCmdID.PASTE:
                keyInput = KeyInput.DefaultValue;
                kind     = EditCommandKind.Paste;
                break;

            case VSConstants.VSStd2KCmdID.COMMENT_BLOCK:
            case VSConstants.VSStd2KCmdID.COMMENTBLOCK:
                keyInput = KeyInput.DefaultValue;
                kind     = EditCommandKind.Comment;
                break;

            case VSConstants.VSStd2KCmdID.UNCOMMENT_BLOCK:
            case VSConstants.VSStd2KCmdID.UNCOMMENTBLOCK:
                keyInput = KeyInput.DefaultValue;
                kind     = EditCommandKind.Uncomment;
                break;

            default:
                keyInput = null;
                kind     = EditCommandKind.UserInput;
                break;
            }

            return(keyInput != null);
        }
Ejemplo n.º 21
0
 public void NotationControlAndSymbol()
 {
     AssertSingle("<C-]>", KeyInputUtil.ApplyModifiersToVimKey(VimKey.CloseBracket, KeyModifiers.Control));
 }