From cc81e93dc6dd47244c1e364186f2cf0bd1550072 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Tue, 14 Jun 2022 13:39:47 -0700 Subject: [PATCH 1/3] Remove unused function --- .../LanguageServices/RegexEmbeddedLanguage.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/Features/Core/Portable/EmbeddedLanguages/RegularExpressions/LanguageServices/RegexEmbeddedLanguage.cs b/src/Features/Core/Portable/EmbeddedLanguages/RegularExpressions/LanguageServices/RegexEmbeddedLanguage.cs index 2c96c08d1a21d..2ea2eb2c38d49 100644 --- a/src/Features/Core/Portable/EmbeddedLanguages/RegularExpressions/LanguageServices/RegexEmbeddedLanguage.cs +++ b/src/Features/Core/Portable/EmbeddedLanguages/RegularExpressions/LanguageServices/RegexEmbeddedLanguage.cs @@ -42,14 +42,6 @@ public RegexEmbeddedLanguage( return tree == null ? default : (tree, token); } - internal async Task TryGetTreeAtPositionAsync( - Document document, int position, CancellationToken cancellationToken) - { - var (tree, _) = await TryGetTreeAndTokenAtPositionAsync( - document, position, cancellationToken).ConfigureAwait(false); - return tree; - } - public string EscapeText(string text, SyntaxToken token) => _provider.EscapeText(text, token); } From e889861430a6b573cf6ad81e6c2b650005e35033 Mon Sep 17 00:00:00 2001 From: Joey Robichaud Date: Tue, 14 Jun 2022 14:04:43 -0700 Subject: [PATCH 2/3] Fix build codeaction telemetry project --- .../BuildActionTelemetryTable/BuildActionTelemetryTable.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tools/BuildActionTelemetryTable/BuildActionTelemetryTable.csproj b/src/Tools/BuildActionTelemetryTable/BuildActionTelemetryTable.csproj index eee1d352ffb39..a0fda0896a5ab 100644 --- a/src/Tools/BuildActionTelemetryTable/BuildActionTelemetryTable.csproj +++ b/src/Tools/BuildActionTelemetryTable/BuildActionTelemetryTable.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net6.0-windows From 4b4dcaaa4226c26422e7071cdd3a994634e09e1b Mon Sep 17 00:00:00 2001 From: Andrew Hall Date: Tue, 14 Jun 2022 15:54:19 -0700 Subject: [PATCH 3/3] Use inline rename session options for all checkboxes directly (#61785) Fixes #60294 The flyout view model isn't recreated, so if the session options change in some way (such as being reset) it won't get updated between showing/hiding. This fixes so there's no intermediate variables and binds directly to the session options. --- .../UI/Adornment/RenameFlyoutViewModel.cs | 78 +++++++++---------- 1 file changed, 35 insertions(+), 43 deletions(-) diff --git a/src/EditorFeatures/Core.Wpf/InlineRename/UI/Adornment/RenameFlyoutViewModel.cs b/src/EditorFeatures/Core.Wpf/InlineRename/UI/Adornment/RenameFlyoutViewModel.cs index 91b9e5d33d184..4a43312758b72 100644 --- a/src/EditorFeatures/Core.Wpf/InlineRename/UI/Adornment/RenameFlyoutViewModel.cs +++ b/src/EditorFeatures/Core.Wpf/InlineRename/UI/Adornment/RenameFlyoutViewModel.cs @@ -21,19 +21,15 @@ internal class RenameFlyoutViewModel : INotifyPropertyChanged, IDisposable private readonly InlineRenameSession _session; private OleComponent? _oleComponent; private bool _disposedValue; + private bool _isReplacementTextValid = true; public event PropertyChangedEventHandler? PropertyChanged; public RenameFlyoutViewModel(InlineRenameSession session) { _session = session; _session.ReplacementTextChanged += OnReplacementTextChanged; - - _previewChangesFlag = _session.PreviewChanges; - _renameFileFlag = _session.Options.RenameFile; - _renameInStringsFlag = _session.Options.RenameInStrings; - _renameInCommentsFlag = _session.Options.RenameInComments; - _renameOverloadsFlag = _session.Options.RenameOverloads; - + _session.ReplacementsComputed += OnReplacementsComputed; + ComputeRenameFile(); RegisterOleComponent(); } @@ -50,7 +46,7 @@ public string IdentifierText } } - public bool AllowFileRename => _session.FileRenameInfo == InlineRenameFileRenameInfo.Allowed; + public bool AllowFileRename => _session.FileRenameInfo == InlineRenameFileRenameInfo.Allowed && _isReplacementTextValid; public bool ShowFileRename => _session.FileRenameInfo != InlineRenameFileRenameInfo.NotAllowed; public string FileRenameString => _session.FileRenameInfo switch @@ -60,73 +56,53 @@ public string IdentifierText _ => EditorFeaturesResources.Rename_symbols_file }; - private bool _renameInCommentsFlag; public bool RenameInCommentsFlag { - get => _renameInCommentsFlag; + get => _session.Options.RenameInComments; set { - if (Set(ref _renameInCommentsFlag, value)) - { - _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameInComments), value); - _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameInComments = value }); - } + _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameInComments), value); + _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameInComments = value }); } } - private bool _renameInStringsFlag; public bool RenameInStringsFlag { - get => _renameInStringsFlag; + get => _session.Options.RenameInStrings; set { - if (Set(ref _renameInStringsFlag, value)) - { - _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameInStrings), value); - _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameInStrings = value }); - } + _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameInStrings), value); + _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameInStrings = value }); } } - private bool _renameFileFlag; public bool RenameFileFlag { - get => _renameFileFlag; + get => _session.Options.RenameFile; set { - if (Set(ref _renameFileFlag, value)) - { - _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameFile), value); - _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameFile = value }); - } + _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameFile), value); + _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameFile = value }); } } - private bool _previewChangesFlag; public bool PreviewChangesFlag { - get => _previewChangesFlag; + get => _session.PreviewChanges; set { - if (Set(ref _previewChangesFlag, value)) - { - _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.PreviewChanges), value); - _session.SetPreviewChanges(value); - } + _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.PreviewChanges), value); + _session.SetPreviewChanges(value); } } - private bool _renameOverloadsFlag; public bool RenameOverloadsFlag { - get => _renameOverloadsFlag; + get => _session.Options.RenameOverloads; set { - if (Set(ref _renameOverloadsFlag, value)) - { - _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameOverloads), value); - _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameOverloads = value }); - } + _session.RenameService.GlobalOptions.SetGlobalOption(new OptionKey(InlineRenameSessionOptionsStorage.RenameOverloads), value); + _session.RefreshRenameSessionWithOptionsChanged(_session.Options with { RenameOverloads = value }); } } @@ -238,6 +214,7 @@ protected virtual void Dispose(bool disposing) if (disposing) { _session.ReplacementTextChanged -= OnReplacementTextChanged; + _session.ReplacementsComputed -= OnReplacementsComputed; UnregisterOleComponent(); } @@ -246,11 +223,26 @@ protected virtual void Dispose(bool disposing) } } + private void ComputeRenameFile() + { + // If replacementText is invalid, we won't rename the file. + RenameFileFlag = _isReplacementTextValid && AllowFileRename && _session.Options.RenameFile; + } + private void OnReplacementTextChanged(object sender, EventArgs e) { NotifyPropertyChanged(nameof(IdentifierText)); } + private void OnReplacementsComputed(object sender, IInlineRenameReplacementInfo result) + { + if (Set(ref _isReplacementTextValid, result.ReplacementTextValid, "IsReplacementTextValid")) + { + ComputeRenameFile(); + NotifyPropertyChanged(nameof(AllowFileRename)); + } + } + private void NotifyPropertyChanged([CallerMemberName] string? name = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));