public IEnumerable <SuggestedActionSet> GetSuggestedActions(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) { if (IsDisposed || cancellationToken.IsCancellationRequested || _settings.AutomaticSync) { return(Enumerable.Empty <SuggestedActionSet>()); } if (!range.Snapshot.TextBuffer.ContentType.TypeName.EqualsOrdinal(MdContentTypeDefinition.ContentType)) { return(Enumerable.Empty <SuggestedActionSet>()); } var codeBlock = TextView.GetCurrentRCodeBlock(); if (codeBlock == null) { return(Enumerable.Empty <SuggestedActionSet>()); } var caretPosition = TextView.Caret.Position.BufferPosition; var applicableSpan = codeBlock.ToSpan(); return(SuggestedActionProviders .Where(ap => ap.HasSuggestedActions(TextView, TextBuffer, caretPosition)) .Select(ap => new SuggestedActionSet(ap.GetSuggestedActions(TextView, TextBuffer, caretPosition), applicableToSpan: applicableSpan))); }
public IEnumerable <SuggestedActionSet> GetSuggestedActions(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) { if (IsDisposed || cancellationToken.IsCancellationRequested || !range.Snapshot.TextBuffer.ContentType.TypeName.EqualsOrdinal(RContentTypeDefinition.ContentType)) { return(Enumerable.Empty <SuggestedActionSet>()); } var caretPosition = TextView.Caret.Position.BufferPosition; var bufferPoint = TextView.MapDownToR(caretPosition); if (!bufferPoint.HasValue) { return(Enumerable.Empty <SuggestedActionSet>()); } var ast = _document?.EditorTree?.AstRoot; var bufferPosition = bufferPoint.Value.Position; _lastNode = ast?.GetNodeOfTypeFromPosition <TokenNode>(bufferPosition); if (_lastNode == null) { return(Enumerable.Empty <SuggestedActionSet>()); } var applicableSpan = _lastNode.ToSpan(); return(SuggestedActionProviders .Where(ap => ap.HasSuggestedActions(TextView, TextBuffer, bufferPosition)) .Select(ap => new SuggestedActionSet(ap.GetSuggestedActions(TextView, TextBuffer, bufferPosition), applicableToSpan: applicableSpan))); }
public Task <bool> HasSuggestedActionsAsync(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) { if (TextView != null && !TextView.Caret.InVirtualSpace) { var rPosition = TextView.MapDownToR(TextView.Caret.Position.BufferPosition); if (rPosition.HasValue && SuggestedActionProviders.Any(actionProvider => actionProvider.HasSuggestedActions(TextView, TextBuffer, rPosition.Value.Position))) { return(Task.FromResult(true)); } } return(Task.FromResult(false)); }
public Task <bool> HasSuggestedActionsAsync(ISuggestedActionCategorySet requestedActionCategories, SnapshotSpan range, CancellationToken cancellationToken) => Task.FromResult( TextView != null && SuggestedActionProviders.Any(a => a.HasSuggestedActions(TextView, TextBuffer, PositionFromRange(range))));