public CommandStatus Status(Guid group, int id) { if (group == VSConstants.VSStd2K) { if (!_expansionClient.IsEditingExpansion()) { switch ((VSConstants.VSStd2KCmdID)id) { case VSConstants.VSStd2KCmdID.TAB: return(_expansionClient.TextView.IsStatementCompletionWindowActive() ? CommandStatus.NotSupported : CommandStatus.SupportedAndEnabled); case VSConstants.VSStd2KCmdID.INSERTSNIPPET: case VSConstants.VSStd2KCmdID.SURROUNDWITH: return(CommandStatus.SupportedAndEnabled); } } else { switch ((VSConstants.VSStd2KCmdID)id) { case VSConstants.VSStd2KCmdID.TAB: case VSConstants.VSStd2KCmdID.BACKTAB: case VSConstants.VSStd2KCmdID.RETURN: case VSConstants.VSStd2KCmdID.CANCEL: case VSConstants.VSStd2KCmdID.INSERTSNIPPET: case VSConstants.VSStd2KCmdID.SURROUNDWITH: return(CommandStatus.SupportedAndEnabled); } } } return(CommandStatus.NotSupported); }
public void ExpansionClientTest() { var textBuffer = new TextBufferMock("if", RContentTypeDefinition.ContentType); var textView = new TextViewMock(textBuffer); var client = new ExpansionClient(textView, textBuffer, _expansionManager, _cache); client.IsEditingExpansion().Should().BeFalse(); client.IsCaretInsideSnippetFields().Should().BeFalse(); _expansionManager.InvokeInsertionUI(null, null, Guid.Empty, new string[0], 0, 0, new string[0], 0, 0, string.Empty, string.Empty) .ReturnsForAnyArgs(VSConstants.S_OK); client.InvokeInsertionUI((int)VSConstants.VSStd2KCmdID.INSERTSNIPPET).Should().Be(VSConstants.S_OK); textView.Caret.MoveTo(new SnapshotPoint(textView.TextBuffer.CurrentSnapshot, 2)); bool inserted; client.StartSnippetInsertion(out inserted); inserted.Should().BeTrue(); client.IsEditingExpansion().Should().BeTrue(); client.EndExpansion(); client.IsEditingExpansion().Should().BeFalse(); client.OnItemChosen("if", "path"); client.IsEditingExpansion().Should().BeTrue(); client.EndExpansion(); client.IsEditingExpansion().Should().BeFalse(); client.IsCaretInsideSnippetFields().Should().BeFalse(); }