public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg) { if (!TextView.Caret.InVirtualSpace) { int caretPosition = TextView.Caret.Position.BufferPosition.Position; var snapshot = TextView.TextBuffer.CurrentSnapshot; Span?spanToSelect = RTextStructure.GetWordSpan(snapshot, caretPosition); if (spanToSelect.HasValue && spanToSelect.Value.Length > 0) { TextView.Selection.Select(new SnapshotSpan(snapshot, spanToSelect.Value), isReversed: false); TextView.Caret.MoveTo(new SnapshotPoint(snapshot, spanToSelect.Value.End)); return(CommandResult.Executed); } } return(CommandResult.NotSupported); }
public void GetWordSpan(string content, int position, int start, int length) { var tb = new TextBufferMock(content, RContentTypeDefinition.ContentType); Span?span = RTextStructure.GetWordSpan(tb.CurrentSnapshot, position); if (span.HasValue) { span.Value.Start.Should().Be(start); span.Value.Length.Should().Be(length); } else { length.Should().Be(0); start.Should().Be(0); } }
public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg) { if (!TextView.Caret.InVirtualSpace) { var point = TextView.MapDownToBuffer(TextView.Caret.Position.BufferPosition, _textBuffer); if (point.HasValue) { var snapshot = point.Value.Snapshot; var spanToSelect = RTextStructure.GetWordSpan(snapshot, point.Value); if (spanToSelect.HasValue && spanToSelect.Value.Length > 0) { var viewSpan = TextView.MapUpToView(snapshot, spanToSelect.Value); if (viewSpan.HasValue) { TextView.Selection.Select(viewSpan.Value, isReversed: false); TextView.Caret.MoveTo(viewSpan.Value.End); return(CommandResult.Executed); } } } } return(CommandResult.NotSupported); }