diff --git a/src/EditorFeatures/Core.Wpf/SymbolSearch/SymbolSearchUpdateEngine.Update.cs b/src/EditorFeatures/Core.Wpf/SymbolSearch/SymbolSearchUpdateEngine.Update.cs index ef49a1452e9ef14d431160c98a1d55d440a698ce..84f8817a5691fe493078e1d81146578e080d6539 100644 --- a/src/EditorFeatures/Core.Wpf/SymbolSearch/SymbolSearchUpdateEngine.Update.cs +++ b/src/EditorFeatures/Core.Wpf/SymbolSearch/SymbolSearchUpdateEngine.Update.cs @@ -580,12 +580,12 @@ private async Task TryDownloadFileAsync(IRemoteControlClient client) DtdProcessing = DtdProcessing.Prohibit, XmlResolver = null }; - using (var reader = XmlReader.Create(stream, settings)) - { - var result = XElement.Load(reader); - await _service.LogInfoAsync("Converting data to XElement completed").ConfigureAwait(false); - return result; - } + + using var reader = XmlReader.Create(stream, settings); + + var result = XElement.Load(reader); + await _service.LogInfoAsync("Converting data to XElement completed").ConfigureAwait(false); + return result; } } diff --git a/src/EditorFeatures/Core/Implementation/EncapsulateField/AbstractEncapsulateFieldCommandHandler.cs b/src/EditorFeatures/Core/Implementation/EncapsulateField/AbstractEncapsulateFieldCommandHandler.cs index cdf1b107ef42bf91bfdb2763cc5e32fd8d35473c..7b730078c1c54d211c181dbe5e457b0756d11fa6 100644 --- a/src/EditorFeatures/Core/Implementation/EncapsulateField/AbstractEncapsulateFieldCommandHandler.cs +++ b/src/EditorFeatures/Core/Implementation/EncapsulateField/AbstractEncapsulateFieldCommandHandler.cs @@ -49,72 +49,71 @@ public bool ExecuteCommand(EncapsulateFieldCommandArgs args, CommandExecutionCon private bool Execute(EncapsulateFieldCommandArgs args, IUIThreadOperationScope waitScope) { - using (var token = _listener.BeginAsyncOperation("EncapsulateField")) + using var token = _listener.BeginAsyncOperation("EncapsulateField"); + + var cancellationToken = waitScope.Context.UserCancellationToken; + var document = args.SubjectBuffer.CurrentSnapshot.GetFullyLoadedOpenDocumentInCurrentContextWithChangesAsync( + waitScope.Context).WaitAndGetResult(cancellationToken); + if (document == null) { - var cancellationToken = waitScope.Context.UserCancellationToken; - var document = args.SubjectBuffer.CurrentSnapshot.GetFullyLoadedOpenDocumentInCurrentContextWithChangesAsync( - waitScope.Context).WaitAndGetResult(cancellationToken); - if (document == null) - { - return false; - } + return false; + } - var spans = args.TextView.Selection.GetSnapshotSpansOnBuffer(args.SubjectBuffer); + var spans = args.TextView.Selection.GetSnapshotSpansOnBuffer(args.SubjectBuffer); - var service = document.GetLanguageService(); + var service = document.GetLanguageService(); - var result = service.EncapsulateFieldAsync(document, spans.First().Span.ToTextSpan(), true, cancellationToken).WaitAndGetResult(cancellationToken); + var result = service.EncapsulateFieldAsync(document, spans.First().Span.ToTextSpan(), true, cancellationToken).WaitAndGetResult(cancellationToken); - // We are about to show a modal UI dialog so we should take over the command execution - // wait context. That means the command system won't attempt to show its own wait dialog - // and also will take it into consideration when measuring command handling duration. - waitScope.Context.TakeOwnership(); + // We are about to show a modal UI dialog so we should take over the command execution + // wait context. That means the command system won't attempt to show its own wait dialog + // and also will take it into consideration when measuring command handling duration. + waitScope.Context.TakeOwnership(); - var workspace = document.Project.Solution.Workspace; - if (result == null) - { - var notificationService = workspace.Services.GetService(); - notificationService.SendNotification(EditorFeaturesResources.Please_select_the_definition_of_the_field_to_encapsulate, severity: NotificationSeverity.Error); - return false; - } + var workspace = document.Project.Solution.Workspace; + if (result == null) + { + var notificationService = workspace.Services.GetService(); + notificationService.SendNotification(EditorFeaturesResources.Please_select_the_definition_of_the_field_to_encapsulate, severity: NotificationSeverity.Error); + return false; + } - waitScope.AllowCancellation = false; - cancellationToken = waitScope.Context.UserCancellationToken; + waitScope.AllowCancellation = false; + cancellationToken = waitScope.Context.UserCancellationToken; - var finalSolution = result.GetSolutionAsync(cancellationToken).WaitAndGetResult(cancellationToken); + var finalSolution = result.GetSolutionAsync(cancellationToken).WaitAndGetResult(cancellationToken); - var previewService = workspace.Services.GetService(); - if (previewService != null) - { - finalSolution = previewService.PreviewChanges( - string.Format(EditorFeaturesResources.Preview_Changes_0, EditorFeaturesResources.Encapsulate_Field), - "vs.csharp.refactoring.preview", - EditorFeaturesResources.Encapsulate_Field_colon, - result.GetNameAsync(cancellationToken).WaitAndGetResult(cancellationToken), - result.GetGlyphAsync(cancellationToken).WaitAndGetResult(cancellationToken), - finalSolution, - document.Project.Solution); - } + var previewService = workspace.Services.GetService(); + if (previewService != null) + { + finalSolution = previewService.PreviewChanges( + string.Format(EditorFeaturesResources.Preview_Changes_0, EditorFeaturesResources.Encapsulate_Field), + "vs.csharp.refactoring.preview", + EditorFeaturesResources.Encapsulate_Field_colon, + result.GetNameAsync(cancellationToken).WaitAndGetResult(cancellationToken), + result.GetGlyphAsync(cancellationToken).WaitAndGetResult(cancellationToken), + finalSolution, + document.Project.Solution); + } - if (finalSolution == null) - { - // User clicked cancel. - return true; - } + if (finalSolution == null) + { + // User clicked cancel. + return true; + } - using (var undoTransaction = _undoManager.GetTextBufferUndoManager(args.SubjectBuffer).TextBufferUndoHistory.CreateTransaction(EditorFeaturesResources.Encapsulate_Field)) + using (var undoTransaction = _undoManager.GetTextBufferUndoManager(args.SubjectBuffer).TextBufferUndoHistory.CreateTransaction(EditorFeaturesResources.Encapsulate_Field)) + { + if (!workspace.TryApplyChanges(finalSolution)) { - if (!workspace.TryApplyChanges(finalSolution)) - { - undoTransaction.Cancel(); - return false; - } - - undoTransaction.Complete(); + undoTransaction.Cancel(); + return false; } - return true; + undoTransaction.Complete(); } + + return true; } public VSCommanding.CommandState GetCommandState(EncapsulateFieldCommandArgs args) diff --git a/src/VisualStudio/Core/Def/Implementation/ProjectSystem/Legacy/AbstractLegacyProject.cs b/src/VisualStudio/Core/Def/Implementation/ProjectSystem/Legacy/AbstractLegacyProject.cs index ebede65041c9edee550a0ece33eabff92713a73c..474c08d0e5f7c753998a848415f52679d70f7a90 100644 --- a/src/VisualStudio/Core/Def/Implementation/ProjectSystem/Legacy/AbstractLegacyProject.cs +++ b/src/VisualStudio/Core/Def/Implementation/ProjectSystem/Legacy/AbstractLegacyProject.cs @@ -304,31 +304,30 @@ private ImmutableArray GetFolderNamesForFolder(uint folderItemID) { AssertIsForeground(); - using (var pooledObject = SharedPools.Default>().GetPooledObject()) - { - var newFolderNames = pooledObject.Object; + using var pooledObject = SharedPools.Default>().GetPooledObject(); + + var newFolderNames = pooledObject.Object; - if (!_folderNameMap.TryGetValue(folderItemID, out var folderNames)) + if (!_folderNameMap.TryGetValue(folderItemID, out var folderNames)) + { + ComputeFolderNames(folderItemID, newFolderNames, Hierarchy); + folderNames = newFolderNames.ToImmutableArray(); + _folderNameMap.Add(folderItemID, folderNames); + } + else + { + // verify names, and change map if we get a different set. + // this is necessary because we only get document adds/removes from the project system + // when a document name or folder name changes. + ComputeFolderNames(folderItemID, newFolderNames, Hierarchy); + if (!Enumerable.SequenceEqual(folderNames, newFolderNames)) { - ComputeFolderNames(folderItemID, newFolderNames, Hierarchy); folderNames = newFolderNames.ToImmutableArray(); - _folderNameMap.Add(folderItemID, folderNames); - } - else - { - // verify names, and change map if we get a different set. - // this is necessary because we only get document adds/removes from the project system - // when a document name or folder name changes. - ComputeFolderNames(folderItemID, newFolderNames, Hierarchy); - if (!Enumerable.SequenceEqual(folderNames, newFolderNames)) - { - folderNames = newFolderNames.ToImmutableArray(); - _folderNameMap[folderItemID] = folderNames; - } + _folderNameMap[folderItemID] = folderNames; } - - return folderNames; } + + return folderNames; } // Different hierarchies are inconsistent on whether they return ints or uints for VSItemIds. diff --git a/src/VisualStudio/Core/Def/Implementation/Venus/ContainedDocument.cs b/src/VisualStudio/Core/Def/Implementation/Venus/ContainedDocument.cs index b39b2aea99f8a72c164b134a1759f19d4b3c9f63..fa2147883efd418d337be491c4c4c14612e5b8c3 100644 --- a/src/VisualStudio/Core/Def/Implementation/Venus/ContainedDocument.cs +++ b/src/VisualStudio/Core/Def/Implementation/Venus/ContainedDocument.cs @@ -328,19 +328,18 @@ private bool WhitespaceOnEdges(SourceText text, TextSpan visibleTextSpan, TextCh private IEnumerable GetSubTextChanges(SourceText originalText, TextChange changeInOriginalText, TextSpan visibleSpanInOriginalText) { - using (var changes = SharedPools.Default>().GetPooledObject()) - { - var leftText = originalText.ToString(changeInOriginalText.Span); - var rightText = changeInOriginalText.NewText; - var offsetInOriginalText = changeInOriginalText.Span.Start; + using var changes = SharedPools.Default>().GetPooledObject(); - if (TryGetSubTextChanges(originalText, visibleSpanInOriginalText, leftText, rightText, offsetInOriginalText, changes.Object)) - { - return changes.Object.ToList(); - } + var leftText = originalText.ToString(changeInOriginalText.Span); + var rightText = changeInOriginalText.NewText; + var offsetInOriginalText = changeInOriginalText.Span.Start; - return GetSubTextChanges(originalText, visibleSpanInOriginalText, leftText, rightText, offsetInOriginalText); + if (TryGetSubTextChanges(originalText, visibleSpanInOriginalText, leftText, rightText, offsetInOriginalText, changes.Object)) + { + return changes.Object.ToList(); } + + return GetSubTextChanges(originalText, visibleSpanInOriginalText, leftText, rightText, offsetInOriginalText); } private bool TryGetSubTextChanges( @@ -766,24 +765,22 @@ private void AdjustIndentation(IProjectionBuffer subjectBuffer, IEnumerable .WithChangedOption(FormattingOptions.TabSize, root.Language, editorOptions.GetTabSize()) .WithChangedOption(FormattingOptions.IndentationSize, root.Language, editorOptions.GetIndentSize()); - using (var pooledObject = SharedPools.Default>().GetPooledObject()) - { - var spans = pooledObject.Object; + using var pooledObject = SharedPools.Default>().GetPooledObject(); - spans.AddRange(this.GetEditorVisibleSpans()); - using (var edit = subjectBuffer.CreateEdit(s_venusEditOptions, reiteratedVersionNumber: null, editTag: null)) - { - foreach (var spanIndex in visibleSpanIndex) - { - var rule = GetBaseIndentationRule(root, originalText, spans, spanIndex); + var spans = pooledObject.Object; - var visibleSpan = spans[spanIndex]; - AdjustIndentationForSpan(document, edit, visibleSpan, rule, options); - } + spans.AddRange(this.GetEditorVisibleSpans()); + using var edit = subjectBuffer.CreateEdit(s_venusEditOptions, reiteratedVersionNumber: null, editTag: null); - edit.Apply(); - } + foreach (var spanIndex in visibleSpanIndex) + { + var rule = GetBaseIndentationRule(root, originalText, spans, spanIndex); + + var visibleSpan = spans[spanIndex]; + AdjustIndentationForSpan(document, edit, visibleSpan, rule, options); } + + edit.Apply(); } private void AdjustIndentationForSpan( diff --git a/src/VisualStudio/IntegrationTest/IntegrationTests/CSharp/CSharpNavigateTo.cs b/src/VisualStudio/IntegrationTest/IntegrationTests/CSharp/CSharpNavigateTo.cs index 5ecf5935e71c91e339ffa1b8db9e5289145c58ea..a1a9488f3c8682c62d59cc923ff0e5f5fc7e221a 100644 --- a/src/VisualStudio/IntegrationTest/IntegrationTests/CSharp/CSharpNavigateTo.cs +++ b/src/VisualStudio/IntegrationTest/IntegrationTests/CSharp/CSharpNavigateTo.cs @@ -25,34 +25,32 @@ public CSharpNavigateTo(VisualStudioInstanceFactory instanceFactory, ITestOutput [WpfFact, Trait(Traits.Feature, Traits.Features.NavigateTo)] public void NavigateTo() { - using (var telemetry = VisualStudio.EnableTestTelemetryChannel()) - { + using var telemetry = VisualStudio.EnableTestTelemetryChannel(); - var project = new ProjectUtils.Project(ProjectName); - VisualStudio.SolutionExplorer.AddFile(project, "test1.cs", open: false, contents: @" + var project = new ProjectUtils.Project(ProjectName); + VisualStudio.SolutionExplorer.AddFile(project, "test1.cs", open: false, contents: @" class FirstClass { void FirstMethod() { } }"); - VisualStudio.SolutionExplorer.AddFile(project, "test2.cs", open: true, contents: @" + VisualStudio.SolutionExplorer.AddFile(project, "test2.cs", open: true, contents: @" "); - VisualStudio.Editor.InvokeNavigateTo("FirstMethod", VirtualKey.Enter); - VisualStudio.Editor.WaitForActiveView("test1.cs"); - Assert.Equal("FirstMethod", VisualStudio.Editor.GetSelectedText()); + VisualStudio.Editor.InvokeNavigateTo("FirstMethod", VirtualKey.Enter); + VisualStudio.Editor.WaitForActiveView("test1.cs"); + Assert.Equal("FirstMethod", VisualStudio.Editor.GetSelectedText()); - // Add a VB project and verify that VB files are found when searching from C# - var vbProject = new ProjectUtils.Project("VBProject"); - VisualStudio.SolutionExplorer.AddProject(vbProject, WellKnownProjectTemplates.ClassLibrary, LanguageNames.VisualBasic); - VisualStudio.SolutionExplorer.AddFile(vbProject, "vbfile.vb", open: true); + // Add a VB project and verify that VB files are found when searching from C# + var vbProject = new ProjectUtils.Project("VBProject"); + VisualStudio.SolutionExplorer.AddProject(vbProject, WellKnownProjectTemplates.ClassLibrary, LanguageNames.VisualBasic); + VisualStudio.SolutionExplorer.AddFile(vbProject, "vbfile.vb", open: true); - VisualStudio.Editor.InvokeNavigateTo("FirstClass", VirtualKey.Enter); - VisualStudio.Editor.WaitForActiveView("test1.cs"); - Assert.Equal("FirstClass", VisualStudio.Editor.GetSelectedText()); - telemetry.VerifyFired("vs/ide/vbcs/navigateto/search", "vs/platform/goto/launch"); - } + VisualStudio.Editor.InvokeNavigateTo("FirstClass", VirtualKey.Enter); + VisualStudio.Editor.WaitForActiveView("test1.cs"); + Assert.Equal("FirstClass", VisualStudio.Editor.GetSelectedText()); + telemetry.VerifyFired("vs/ide/vbcs/navigateto/search", "vs/platform/goto/launch"); } } }