/// <summary> /// Is the current selection that of the C# event add pattern? /// </summary> internal bool IsEventAddSelection(ITextView textView) { var textSelection = textView.Selection; if (textSelection.IsEmpty || textSelection.Mode != TextSelectionMode.Stream) { return(false); } var span = textView.Selection.StreamSelectionSpan.SnapshotSpan; var lineRange = SnapshotLineRangeUtil.CreateForSpan(span); if (lineRange.Count != 1) { return(false); } // Include the character after the selection. Needed to disambiguate a couple // of cases var endPoint = span.End; if (endPoint.Position < lineRange.End.Position) { endPoint = endPoint.Add(1); } var beforeSpan = new SnapshotSpan(lineRange.Start, endPoint); return(IsPreceededByEventAddSyntax(beforeSpan)); }
public void CreateForLineNumberAndCount3() { Create("hello", "world"); var opt = SnapshotLineRangeUtil.CreateForLineNumberAndCount(_buffer.CurrentSnapshot, 0, 300); Assert.True(opt.IsNone()); }
public void Apply_CountOfOne() { Create("cat", "dog", "rabbit", "tree"); var v1 = _textBuffer.GetLineRange(0, 1); var v2 = _rangeUtil.ApplyCount(1, v1); Assert.AreEqual(SnapshotLineRangeUtil.CreateForLine(_textBuffer.GetLine(1)), v2); }
public void Lines1() { Create("a", "b"); var lineSpan = SnapshotLineRangeUtil.CreateForLineNumberAndCount(_buffer.CurrentSnapshot, 0, 1).Value; Assert.AreEqual(0, lineSpan.Lines.First().LineNumber); Assert.AreEqual(0, lineSpan.Lines.Last().LineNumber); }
public void CreateForLineAndMaxCount1() { Create("a", "b"); var range = SnapshotLineRangeUtil.CreateForLineAndMaxCount(_buffer.GetLine(0), 1); Assert.Equal(1, range.Count); Assert.Equal(0, range.StartLineNumber); Assert.Equal(0, range.LastLineNumber); }
internal static ModeArgument CreateSubstituteArgument( SnapshotSpan span, SnapshotLineRange?range = null, SubstituteData data = null) { range = range ?? SnapshotLineRangeUtil.CreateForSnapshot(span.Snapshot); data = data ?? new SubstituteData("a", "b", SubstituteFlags.None); return(ModeArgument.NewSubstitute(span, range.Value, data)); }
public void CreateForLine() { Create("hello", "world"); var range = SnapshotLineRangeUtil.CreateForLine(_buffer.GetLine(0)); Assert.Equal("hello", range.Extent.GetText()); Assert.Equal(1, range.Count); Assert.Equal(0, range.StartLineNumber); Assert.Equal(0, range.LastLineNumber); }
public void CreateForLineNumberRange1() { Create("hello", "world"); var range = SnapshotLineRangeUtil.CreateForLineNumberRange(_buffer.CurrentSnapshot, 0, 0); Assert.AreEqual("hello", range.Extent.GetText()); Assert.AreEqual(1, range.Count); Assert.AreEqual(0, range.StartLineNumber); Assert.AreEqual(0, range.EndLineNumber); }
public void CreateForLineNumberAndCount2() { Create("hello", "world"); var range = SnapshotLineRangeUtil.CreateForLineNumberAndCount(_buffer.CurrentSnapshot, 0, 2).Value; Assert.AreEqual("hello" + Environment.NewLine + "world", range.Extent.GetText()); Assert.AreEqual(2, range.Count); Assert.AreEqual(0, range.StartLineNumber); Assert.AreEqual(1, range.EndLineNumber); }
public void CreateForLineNumberAndCount1() { Create("hello", "world"); var range = SnapshotLineRangeUtil.CreateForLineNumberAndCount(_buffer.CurrentSnapshot, 0, 1).Value; Assert.Equal("hello", range.Extent.GetText()); Assert.Equal(1, range.Count); Assert.Equal(0, range.StartLineNumber); Assert.Equal(0, range.LastLineNumber); }
public void CreateForLineNumberRange2() { Create("hello", "world"); var range = SnapshotLineRangeUtil.CreateForLineNumberRange(_buffer.CurrentSnapshot, 0, 1); Assert.Equal("hello" + Environment.NewLine + "world", range.Extent.GetText()); Assert.Equal(2, range.Count); Assert.Equal(0, range.StartLineNumber); Assert.Equal(1, range.LastLineNumber); }
private AsyncBackgroundRequest CreateAsyncBackgroundRequest( SnapshotSpan span, CancellationTokenSource cancellationTokenSource, Task task = null) { task = task ?? new Task(() => { }); return(new AsyncBackgroundRequest( SnapshotLineRangeUtil.CreateForSpan(span), cancellationTokenSource, new SingleItemQueue <SnapshotLineRange>(), task)); }
internal static ModeArgument CreateSubstituteArgument( SnapshotSpan span, string search, string replace, SubstituteFlags?flags = null, SnapshotLineRange?range = null) { range = range ?? SnapshotLineRangeUtil.CreateForSnapshot(span.Snapshot); var data = new SubstituteData(search, replace, flags ?? SubstituteFlags.None); return(ModeArgument.NewSubstitute(span, range.Value, data)); }
private ReadOnlyCollection <ITagSpan <IClassificationTag> > GetTags(SnapshotSpan span) { var lineSpan = SnapshotLineRangeUtil.CreateForSpan(span); var snapshot = span.Snapshot; var list = new List <ITagSpan <IClassificationTag> >(); foreach (var line in lineSpan.Lines) { if (DirectoryUtil.TryGetDirectorySpan(line, out SnapshotSpan directorySpan)) { list.Add(new TagSpan <IClassificationTag>(directorySpan, _classificationTag)); } } return(list.ToReadOnlyCollectionShallow()); }
public static Result <SnapshotLineRange> GetVisibleLineRange(this ITextView textView) { try { var lines = textView.TextViewLines; if (lines.Count == 0) { return(Result.Error); } var start = lines[0].Start; var end = lines[lines.Count - 1].EndIncludingLineBreak; var span = new SnapshotSpan(start, end); return(SnapshotLineRangeUtil.CreateForSpan(span)); } catch (Exception ex) { // TextViewLines can throw when the view is being laid out return(Result.CreateError(ex)); } }
/// <summary> /// Is the current selection that of the C# event add pattern? /// </summary> internal bool IsEventAddSelection(ITextView textView) { var textSelection = textView.Selection; if (textSelection.IsEmpty || textSelection.Mode != TextSelectionMode.Stream) { return(false); } var span = textView.Selection.StreamSelectionSpan.SnapshotSpan; var lineRange = SnapshotLineRangeUtil.CreateForSpan(span); if (lineRange.Count != 1) { return(false); } var beforeSpan = new SnapshotSpan(lineRange.Start, span.End); return(IsPreceededByEventAddSyntax(beforeSpan)); }
public static SnapshotLineRange GetLineRange(this ITextSnapshot tss, int startLine, int endLine = -1) { endLine = endLine >= 0 ? endLine : startLine; return(SnapshotLineRangeUtil.CreateForLineNumberRange(tss, startLine, endLine)); }
public static SnapshotLineRange GetLineRange(this ITextBuffer buffer, int startLine, int endLine = -1) { endLine = endLine >= 0 ? endLine : startLine; return(SnapshotLineRangeUtil.CreateForLineNumberRange(buffer.CurrentSnapshot, startLine, endLine)); }