Skip to content

Commit

Permalink
Merge pull request #5 from JieCarolHu/dev/chrmann/Fixers
Browse files Browse the repository at this point in the history
Update fixers for execution context changes
  • Loading branch information
Carol Hu authored Sep 27, 2018
2 parents cf29fa1 + d0af9d1 commit a99d68d
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 34 deletions.
24 changes: 12 additions & 12 deletions build/Targets/Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -92,24 +92,24 @@
<MicrosoftVisualStudioCodingConventionsVersion>1.1.20180503.2</MicrosoftVisualStudioCodingConventionsVersion>
<MicrosoftVisualStudioComponentModelHostVersion>15.7.27703</MicrosoftVisualStudioComponentModelHostVersion>
<MicrosoftVisualStudioCompositionVersion>15.5.23</MicrosoftVisualStudioCompositionVersion>
<MicrosoftVisualStudioCoreUtilityVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioCoreUtilityVersion>
<MicrosoftVisualStudioCoreUtilityVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioCoreUtilityVersion>
<MicrosoftVisualStudioDebuggerEngineVersion>15.0.27309-vsucorediag</MicrosoftVisualStudioDebuggerEngineVersion>
<MicrosoftVisualStudioDebuggerMetadataVersion>15.0.27309-vsucorediag</MicrosoftVisualStudioDebuggerMetadataVersion>
<MicrosoftVisualStudioDebuggerUIInterfacesVersion>15.0.27309-vsucorediag</MicrosoftVisualStudioDebuggerUIInterfacesVersion>
<MicrosoftVisualStudioDesignerInterfacesVersion>1.1.4322</MicrosoftVisualStudioDesignerInterfacesVersion>
<MicrosoftVisualStudioDiagnosticsPerformanceProviderVersion>15.8.27812-alpha</MicrosoftVisualStudioDiagnosticsPerformanceProviderVersion>
<MicrosoftVisualStudioSDKEmbedInteropTypesVersion>15.0.17</MicrosoftVisualStudioSDKEmbedInteropTypesVersion>
<MicrosoftVisualStudioEditorVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioEditorVersion>
<MicrosoftVisualStudioEditorVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioEditorVersion>
<MicrosoftVisualStudioGraphModelVersion>15.8.27812-alpha</MicrosoftVisualStudioGraphModelVersion>
<MicrosoftVisualStudioImagingInterop140DesignTimeVersion>14.3.26930</MicrosoftVisualStudioImagingInterop140DesignTimeVersion>
<MicrosoftVisualStudioInteractiveWindowVersion>2.0.0-rc3-61304-01</MicrosoftVisualStudioInteractiveWindowVersion>
<MicrosoftVisualStudioLanguageVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioLanguageVersion>
<MicrosoftVisualStudioLanguageVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioLanguageVersion>
<MicrosoftVisualStudioLanguageCallHierarchyVersion>15.8.27812-alpha</MicrosoftVisualStudioLanguageCallHierarchyVersion>
<MicrosoftVisualStudioLanguageIntellisenseVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioLanguageIntellisenseVersion>
<MicrosoftVisualStudioLanguageNavigateToInterfacesVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioLanguageNavigateToInterfacesVersion>
<MicrosoftVisualStudioLanguageStandardClassificationVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioLanguageStandardClassificationVersion>
<MicrosoftVisualStudioLanguageIntellisenseVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioLanguageIntellisenseVersion>
<MicrosoftVisualStudioLanguageNavigateToInterfacesVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioLanguageNavigateToInterfacesVersion>
<MicrosoftVisualStudioLanguageStandardClassificationVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioLanguageStandardClassificationVersion>
<MicrosoftVisualStudioOLEInteropVersion>7.10.6071</MicrosoftVisualStudioOLEInteropVersion>
<MicrosoftVisualStudioPlatformVSEditorVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioPlatformVSEditorVersion>
<MicrosoftVisualStudioPlatformVSEditorVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioPlatformVSEditorVersion>
<MicrosoftVisualStudioProgressionCodeSchemaVersion>15.8.27812-alpha</MicrosoftVisualStudioProgressionCodeSchemaVersion>
<MicrosoftVisualStudioProgressionCommonVersion>15.8.27812-alpha</MicrosoftVisualStudioProgressionCommonVersion>
<MicrosoftVisualStudioProgressionInterfacesVersion>15.8.27812-alpha</MicrosoftVisualStudioProgressionInterfacesVersion>
Expand All @@ -130,11 +130,11 @@
<MicrosoftVisualStudioShellInterop80Version>8.0.50728</MicrosoftVisualStudioShellInterop80Version>
<MicrosoftVisualStudioTelemetryVersion>15.8.27812-alpha</MicrosoftVisualStudioTelemetryVersion>
<MicrosoftVisualStudioTemplateWizardInterfaceVersion>8.0.0.0-alpha</MicrosoftVisualStudioTemplateWizardInterfaceVersion>
<MicrosoftVisualStudioTextDataVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioTextDataVersion>
<MicrosoftVisualStudioTextInternalVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioTextInternalVersion>
<MicrosoftVisualStudioTextLogicVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioTextLogicVersion>
<MicrosoftVisualStudioTextUIVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioTextUIVersion>
<MicrosoftVisualStudioTextUIWpfVersion>16.0.128-g71b79b7ac9</MicrosoftVisualStudioTextUIWpfVersion>
<MicrosoftVisualStudioTextDataVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioTextDataVersion>
<MicrosoftVisualStudioTextInternalVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioTextInternalVersion>
<MicrosoftVisualStudioTextLogicVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioTextLogicVersion>
<MicrosoftVisualStudioTextUIVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioTextUIVersion>
<MicrosoftVisualStudioTextUIWpfVersion>16.0.130-g7b81c05769</MicrosoftVisualStudioTextUIWpfVersion>
<MicrosoftVisualStudioTextManagerInteropVersion>7.10.6071</MicrosoftVisualStudioTextManagerInteropVersion>
<MicrosoftVisualStudioTextManagerInterop100Version>10.0.30320</MicrosoftVisualStudioTextManagerInterop100Version>
<MicrosoftVisualStudioTextManagerInterop120Version>12.0.30110</MicrosoftVisualStudioTextManagerInterop120Version>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,20 @@ namespace Microsoft.VisualStudio.LanguageServices.CSharp.LanguageService
[VisualStudio.Utilities.ContentType(ContentTypeNames.CSharpContentType)]
internal class CSharpCodeCleanUpFixer : CodeCleanUpFixer
{
public override Task<bool> FixAsync(ICodeCleanUpScope scope, IUIThreadOperationContext operationContext, FixIdContainer enabledFixIds, CancellationToken cancellationToken)
public override Task<bool> FixAsync(ICodeCleanUpScope scope, ICodeCleanUpExecutionContext context, CancellationToken cancellationToken)
{
switch(scope)
{
case TextBufferCodeCleanUpScope textBufferScope:
return FixTextBufferAsync(textBufferScope, cancellationToken);
return FixTextBufferAsync(textBufferScope, context, cancellationToken);
case IVsHierarchyCodeCleanupScope hierarchyContentScope:
return FixHierarchyContentAsync(hierarchyContentScope, cancellationToken);
return FixHierarchyContentAsync(hierarchyContentScope, context, cancellationToken);
default:
return Task.FromResult(false);
}
}

private Task<bool> FixHierarchyContentAsync(IVsHierarchyCodeCleanupScope hierarchyContent, CancellationToken cancellationToken)
private Task<bool> FixHierarchyContentAsync(IVsHierarchyCodeCleanupScope hierarchyContent, ICodeCleanUpExecutionContext context, CancellationToken cancellationToken)
{
// TODO: this one will be implemented later
var hierarchy = hierarchyContent.Hierarchy;
Expand Down Expand Up @@ -66,32 +66,45 @@ private Task<bool> FixHierarchyContentAsync(IVsHierarchyCodeCleanupScope hierarc
return Task.FromResult(false);
}

private async Task<bool> FixTextBufferAsync(TextBufferCodeCleanUpScope textBufferScope, CancellationToken cancellationToken)
private async Task<bool> FixTextBufferAsync(TextBufferCodeCleanUpScope textBufferScope, ICodeCleanUpExecutionContext context, CancellationToken cancellationToken)
{
cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(context.OperationContext.UserCancellationToken, cancellationToken).Token;

var buffer = textBufferScope.SubjectBuffer;
if (buffer != null)
{
var progressTracker = new ProgressTracker();
var document = buffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges();
var codeCleanupService = document.GetLanguageService<ICodeCleanupService>();
using (var scope = context.OperationContext.AddScope(allowCancellation: true, description: EditorFeaturesResources.Applying_changes))
{
var progressTracker = new ProgressTracker((description, completed, total) =>
{
if (scope != null)
{
scope.Description = description;
scope?.Progress.Report(new ProgressInfo(completed, total));
}
});

// TODO: enable all diagnostics for now, need to be replace by inclusion/ exclusion list from .editorconfig
var organizeUsingsSet = new OrganizeUsingsSet(true, true);
var enabledDiagnostics = codeCleanupService.GetAllDiagnostics();
var document = buffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges();
var codeCleanupService = document.GetLanguageService<ICodeCleanupService>();

var newDoc = await codeCleanupService.CleanupAsync(
document, organizeUsingsSet, enabledDiagnostics, progressTracker, cancellationToken);
// TODO: enable all diagnostics for now, need to be replace by inclusion/ exclusion list from .editorconfig
var organizeUsingsSet = new OrganizeUsingsSet(true, true);
var enabledDiagnostics = codeCleanupService.GetAllDiagnostics();

var codeCleanupChanges = await newDoc.GetTextChangesAsync(document, cancellationToken).ConfigureAwait(false);
if (codeCleanupChanges != null && codeCleanupChanges.Any())
{
progressTracker.Description = EditorFeaturesResources.Applying_changes;
using (Logger.LogBlock(FunctionId.Formatting_ApplyResultToBuffer, cancellationToken))
var newDoc = await codeCleanupService.CleanupAsync(
document, organizeUsingsSet, enabledDiagnostics, progressTracker, cancellationToken);

var codeCleanupChanges = await newDoc.GetTextChangesAsync(document, cancellationToken).ConfigureAwait(false);
if (codeCleanupChanges != null && codeCleanupChanges.Any())
{
newDoc.Project.Solution.Workspace.ApplyTextChanges(newDoc.Id, codeCleanupChanges, cancellationToken);
}
progressTracker.Description = EditorFeaturesResources.Applying_changes;
using (Logger.LogBlock(FunctionId.Formatting_ApplyResultToBuffer, cancellationToken))
{
newDoc.Project.Solution.Workspace.ApplyTextChanges(newDoc.Id, codeCleanupChanges, cancellationToken);
}

return true;
return true;
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.CodeCleanup
{
internal abstract class CodeCleanUpFixer : ICodeCleanUpFixer
{
public abstract Task<bool> FixAsync(ICodeCleanUpScope scope, IUIThreadOperationContext operationContext, FixIdContainer enabledFixIds, CancellationToken cancellationToken);
public abstract Task<bool> FixAsync(ICodeCleanUpScope scope, ICodeCleanUpExecutionContext context, CancellationToken cancellationToken);
}
}

0 comments on commit a99d68d

Please sign in to comment.