public IEnumerable <SuggestedActionSet> GetSuggestedActions(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) { return(Enumerable.Empty <SuggestedActionSet>()); TextExtent extent; if (!this.TryGetWordUnderCaret(out extent) || !extent.IsSignificant) { return(Enumerable.Empty <SuggestedActionSet>()); } var extentToken = new PSharpLexer().Tokenize(extent.Span.GetText()).FirstOrDefault(); if (extentToken == null) { return(Enumerable.Empty <SuggestedActionSet>()); } var snapshot = extent.Span.Snapshot; var trackSpan = range.Snapshot.CreateTrackingSpan(extent.Span, SpanTrackingMode.EdgeInclusive); var preSpan = new SnapshotSpan(snapshot, new Span(snapshot.GetLineFromLineNumber(0).Start, trackSpan.GetStartPoint(snapshot).Position)); var tokens = new PSharpLexer().Tokenize(preSpan.GetText()); var parser = new PSharpParser(ParsingOptions.CreateDefault()); parser.ParseTokens(tokens); var expected = parser.GetExpectedTokenTypes(); if (this.IsExpectedTokenType(extentToken, expected)) { return(Enumerable.Empty <SuggestedActionSet>()); } var errorFixAction = new ErrorFixSuggestedAction(trackSpan); return(new SuggestedActionSet[] { new SuggestedActionSet(new ISuggestedAction[] { errorFixAction }) }); }
public IEnumerable<SuggestedActionSet> GetSuggestedActions(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) { return Enumerable.Empty<SuggestedActionSet>(); TextExtent extent; if (!this.TryGetWordUnderCaret(out extent) || !extent.IsSignificant) { return Enumerable.Empty<SuggestedActionSet>(); } var extentToken = new PSharpLexer().Tokenize(extent.Span.GetText()).FirstOrDefault(); if (extentToken == null) { return Enumerable.Empty<SuggestedActionSet>(); } var snapshot = extent.Span.Snapshot; var trackSpan = range.Snapshot.CreateTrackingSpan(extent.Span, SpanTrackingMode.EdgeInclusive); var preSpan = new SnapshotSpan(snapshot, new Span(snapshot.GetLineFromLineNumber(0).Start, trackSpan.GetStartPoint(snapshot).Position)); var tokens = new PSharpLexer().Tokenize(preSpan.GetText()); var parser = new PSharpParser(ParsingOptions.CreateDefault()); parser.ParseTokens(tokens); var expected = parser.GetExpectedTokenTypes(); if (this.IsExpectedTokenType(extentToken, expected)) { return Enumerable.Empty<SuggestedActionSet>(); } var errorFixAction = new ErrorFixSuggestedAction(trackSpan); return new SuggestedActionSet[] { new SuggestedActionSet(new ISuggestedAction[] { errorFixAction }) }; }