Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ private bool TryExecuteCommand(FormatDocumentCommandArgs args)
_waitIndicator.Wait(
title: EditorFeaturesResources.FormatDocument,
message: EditorFeaturesResources.FormattingDocument,
allowCancel: false,
allowCancel: true,
action: waitContext =>
{
Format(args.TextView, document, null, waitContext.CancellationToken);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ private bool TryExecuteCommand(FormatSelectionCommandArgs args)
_waitIndicator.Wait(
title: EditorFeaturesResources.FormatSelection,
message: EditorFeaturesResources.FormattingCurrentlySelected,
allowCancel: false,
allowCancel: true,
action: waitContext =>
{
var buffer = args.SubjectBuffer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public void ExecuteCommand(PasteCommandArgs args, Action nextHandler)
_waitIndicator.Wait(
title: EditorFeaturesResources.FormatPaste,
message: EditorFeaturesResources.FormattingPastedText,
allowCancel: false,
allowCancel: true,
action: c => ExecuteCommandWorker(args, nextHandler, c.CancellationToken));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -409,25 +409,28 @@ public IEnumerable<IndentBlockOperation> GetAllRelativeIndentBlockOperations()
return _relativeIndentationTree.GetIntersectingInOrderIntervals(this.TreeData.StartPosition, this.TreeData.EndPosition, this).Select(i => i.Operation);
}

public SyntaxToken GetEndTokenForRelativeIndentationSpan(SyntaxToken token)
public SyntaxToken GetEndTokenForRelativeIndentationSpan(SyntaxToken token, CancellationToken cancellationToken)
{
var span = token.Span;
var indentationData = _relativeIndentationTree.GetSmallestContainingInterval(span.Start, 0);
if (indentationData == null)
while (true)
{
// this means the given token is not inside of inseparable regions
return token;
}
var span = token.Span;
var indentationData = _relativeIndentationTree.GetSmallestContainingInterval(span.Start, 0);
if (indentationData == null)
{
// this means the given token is not inside of inseparable regions
return token;
}

// recursively find the end token outside of inseparable regions
var nextToken = indentationData.EndToken.GetNextToken(includeZeroWidth: true);
if (nextToken.RawKind == 0)
{
// reached end of tree
return default(SyntaxToken);
}
// recursively find the end token outside of inseparable regions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove the word "recursively"?

token = indentationData.EndToken.GetNextToken(includeZeroWidth: true);
if (token.RawKind == 0)
{
// reached end of tree
return default(SyntaxToken);
}

return GetEndTokenForRelativeIndentationSpan(nextToken);
cancellationToken.ThrowIfCancellationRequested();
}
}

private AnchorData GetAnchorData(SyntaxToken token)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

using System;
using System.Collections.Generic;
using System.Threading;
using Microsoft.CodeAnalysis.Text;
using Roslyn.Utilities;

Expand All @@ -28,7 +29,7 @@ public Partitioner(FormattingContext context, TokenStream tokenStream, TokenPair
_operationPairs = operationPairs;
}

public List<IEnumerable<TokenPairWithOperations>> GetPartitions(int partitionCount)
public List<IEnumerable<TokenPairWithOperations>> GetPartitions(int partitionCount, CancellationToken cancellationToken)
{
Contract.ThrowIfFalse(partitionCount > 0);

Expand Down Expand Up @@ -58,7 +59,7 @@ public List<IEnumerable<TokenPairWithOperations>> GetPartitions(int partitionCou
break;
}

var nextToken = _context.GetEndTokenForRelativeIndentationSpan(_operationPairs[nextPartitionStartOperationIndex].Token1);
var nextToken = _context.GetEndTokenForRelativeIndentationSpan(_operationPairs[nextPartitionStartOperationIndex].Token1, cancellationToken);
if (nextToken.RawKind == 0)
{
// reached the last token in the tree
Expand All @@ -79,6 +80,8 @@ public List<IEnumerable<TokenPairWithOperations>> GetPartitions(int partitionCou

list.Add(GetOperationPairsFromTo(currentOperationIndex, nextTokenWithIndex.IndexInStream));
currentOperationIndex = nextTokenWithIndex.IndexInStream;

cancellationToken.ThrowIfCancellationRequested();
}

return list;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -441,7 +441,9 @@ private void ApplySpaceAndWrappingOperations(
var partitioner = new Partitioner(context, tokenStream, tokenOperations);

// always create task 1 more than current processor count
var partitions = partitioner.GetPartitions(this.TaskExecutor == TaskExecutor.Synchronous ? 1 : Environment.ProcessorCount + 1);
var partitions = partitioner.GetPartitions(this.TaskExecutor == TaskExecutor.Synchronous ? 1 : Environment.ProcessorCount + 1, cancellationToken);

cancellationToken.ThrowIfCancellationRequested();

var tasks = new Task[partitions.Count];
for (int i = 0; i < partitions.Count; i++)
Expand Down