From 00dab12a61289bcc83abf45dc4a6f94102500a8a Mon Sep 17 00:00:00 2001 From: Shen Chen Date: Tue, 1 Oct 2024 16:38:18 -0700 Subject: [PATCH 1/2] Use primary constructor --- .../CommandHandlers/RenameCommandHandler.cs | 18 ++++----- .../AbstractRenameCommandHandler.cs | 37 +++++++------------ ...tractRenameCommandHandler_EscapeHandler.cs | 4 +- ...enameCommandHandler_LineStartEndHandler.cs | 4 +- ...tractRenameCommandHandler_RenameHandler.cs | 12 +++--- ...tractRenameCommandHandler_ReturnHandler.cs | 4 +- ...bstractRenameCommandHandler_SaveHandler.cs | 2 +- ...ctRenameCommandHandler_SelectAllHandler.cs | 4 +- ...actRenameCommandHandler_UndoRedoHandler.cs | 12 +++--- ...tRenameCommandHandler_WordDeleteHandler.cs | 4 +- 10 files changed, 43 insertions(+), 58 deletions(-) diff --git a/src/EditorFeatures/Core.Wpf/InlineRename/CommandHandlers/RenameCommandHandler.cs b/src/EditorFeatures/Core.Wpf/InlineRename/CommandHandlers/RenameCommandHandler.cs index 9283a50c0bf08..0b74fdaf53a24 100644 --- a/src/EditorFeatures/Core.Wpf/InlineRename/CommandHandlers/RenameCommandHandler.cs +++ b/src/EditorFeatures/Core.Wpf/InlineRename/CommandHandlers/RenameCommandHandler.cs @@ -28,18 +28,14 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.InlineRename [Order(Before = PredefinedCommandHandlerNames.ChangeSignature)] [Order(Before = PredefinedCommandHandlerNames.ExtractInterface)] [Order(Before = PredefinedCommandHandlerNames.EncapsulateField)] - internal partial class RenameCommandHandler : AbstractRenameCommandHandler + [method: ImportingConstructor] + [method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] + internal partial class RenameCommandHandler( + IThreadingContext threadingContext, + InlineRenameService renameService, + IAsynchronousOperationListenerProvider asynchronousOperationListenerProvider) + : AbstractRenameCommandHandler(threadingContext, renameService, asynchronousOperationListenerProvider.GetListener(FeatureAttribute.Rename)) { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public RenameCommandHandler( - IThreadingContext threadingContext, - InlineRenameService renameService, - IAsynchronousOperationListenerProvider asynchronousOperationListenerProvider) - : base(threadingContext, renameService, asynchronousOperationListenerProvider) - { - } - protected override bool AdornmentShouldReceiveKeyboardNavigation(ITextView textView) => GetAdornment(textView) switch { diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs index 327254149e670..8db2b477e3a70 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs @@ -16,22 +16,11 @@ namespace Microsoft.CodeAnalysis.Editor.Implementation.InlineRename; -internal abstract partial class AbstractRenameCommandHandler +internal abstract partial class AbstractRenameCommandHandler( + IThreadingContext threadingContext, + InlineRenameService renameService, + IAsynchronousOperationListener listener) { - private readonly IThreadingContext _threadingContext; - private readonly InlineRenameService _renameService; - private readonly IAsynchronousOperationListener _listener; - - protected AbstractRenameCommandHandler( - IThreadingContext threadingContext, - InlineRenameService renameService, - IAsynchronousOperationListenerProvider asynchronousOperationListenerProvider) - { - _threadingContext = threadingContext; - _renameService = renameService; - _listener = asynchronousOperationListenerProvider.GetListener(FeatureAttribute.Rename); - } - public string DisplayName => EditorFeaturesResources.Rename; protected abstract bool AdornmentShouldReceiveKeyboardNavigation(ITextView textView); @@ -46,7 +35,7 @@ protected AbstractRenameCommandHandler( private CommandState GetCommandState(Func nextHandler) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { return CommandState.Available; } @@ -55,12 +44,12 @@ private CommandState GetCommandState(Func nextHandler) } private CommandState GetCommandState() - => _renameService.ActiveSession != null ? CommandState.Available : CommandState.Unspecified; + => renameService.ActiveSession != null ? CommandState.Available : CommandState.Unspecified; private void HandlePossibleTypingCommand(TArgs args, Action nextHandler, IUIThreadOperationContext operationContext, Action actionIfInsideActiveSpan) where TArgs : EditorCommandArgs { - if (_renameService.ActiveSession == null) + if (renameService.ActiveSession == null) { nextHandler(); return; @@ -77,12 +66,12 @@ private void HandlePossibleTypingCommand(TArgs args, Action nextHandler, } var singleSpan = selectedSpans.Single(); - if (_renameService.ActiveSession.TryGetContainingEditableSpan(singleSpan.Start, out var containingSpan) && + if (renameService.ActiveSession.TryGetContainingEditableSpan(singleSpan.Start, out var containingSpan) && containingSpan.Contains(singleSpan)) { - actionIfInsideActiveSpan(_renameService.ActiveSession, operationContext, containingSpan); + actionIfInsideActiveSpan(renameService.ActiveSession, operationContext, containingSpan); } - else if (_renameService.ActiveSession.IsInOpenTextBuffer(singleSpan.Start)) + else if (renameService.ActiveSession.IsInOpenTextBuffer(singleSpan.Start)) { // It's in a read-only area that is open, so let's commit the rename // and then let the character go through @@ -98,7 +87,7 @@ private void HandlePossibleTypingCommand(TArgs args, Action nextHandler, private void CommitIfActive(EditorCommandArgs args, IUIThreadOperationContext operationContext) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { var selection = args.TextView.Selection.VirtualSelectedSpans.First(); @@ -118,7 +107,7 @@ private void CommitIfActiveAndCallNextHandler(EditorCommandArgs args, Action nex private void Commit(IUIThreadOperationContext operationContext) { - RoslynDebug.AssertNotNull(_renameService.ActiveSession); - _renameService.ActiveSession.Commit(previewChanges: false, operationContext); + RoslynDebug.AssertNotNull(renameService.ActiveSession); + renameService.ActiveSession.Commit(previewChanges: false, operationContext); } } diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_EscapeHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_EscapeHandler.cs index 9d80929da596a..2a73834961c84 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_EscapeHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_EscapeHandler.cs @@ -14,9 +14,9 @@ public CommandState GetCommandState(EscapeKeyCommandArgs args) public bool ExecuteCommand(EscapeKeyCommandArgs args, CommandExecutionContext context) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { - _renameService.ActiveSession.Cancel(); + renameService.ActiveSession.Cancel(); SetFocusToTextView(args.TextView); return true; } diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_LineStartEndHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_LineStartEndHandler.cs index 6a78bc4b23ae0..1f853396cd729 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_LineStartEndHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_LineStartEndHandler.cs @@ -40,7 +40,7 @@ public bool ExecuteCommand(LineEndExtendCommandArgs args, CommandExecutionContex private bool HandleLineStartOrLineEndCommand(ITextBuffer subjectBuffer, ITextView view, bool lineStart, bool extendSelection) { - if (_renameService.ActiveSession == null) + if (renameService.ActiveSession == null) { return false; } @@ -48,7 +48,7 @@ private bool HandleLineStartOrLineEndCommand(ITextBuffer subjectBuffer, ITextVie var caretPoint = view.GetCaretPoint(subjectBuffer); if (caretPoint.HasValue) { - if (_renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out var span)) + if (renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out var span)) { var newPoint = lineStart ? span.Start : span.End; if (newPoint == caretPoint.Value && (view.Selection.IsEmpty || extendSelection)) diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_RenameHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_RenameHandler.cs index 8fce77aa75c2b..6e02773342067 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_RenameHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_RenameHandler.cs @@ -43,14 +43,14 @@ public bool ExecuteCommand(RenameCommandArgs args, CommandExecutionContext conte return false; } - var token = _listener.BeginAsyncOperation(nameof(ExecuteCommand)); + var token = listener.BeginAsyncOperation(nameof(ExecuteCommand)); _ = ExecuteCommandAsync(args, context.OperationContext).CompletesAsyncOperation(token); return true; } private async Task ExecuteCommandAsync(RenameCommandArgs args, IUIThreadOperationContext editorOperationContext) { - _threadingContext.ThrowIfNotOnUIThread(); + threadingContext.ThrowIfNotOnUIThread(); if (!args.SubjectBuffer.TryGetWorkspace(out var workspace)) { @@ -65,11 +65,11 @@ private async Task ExecuteCommandAsync(RenameCommandArgs args, IUIThreadOperatio } // If there is already an active session, commit it first - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { // Is the caret within any of the rename fields in this buffer? // If so, focus the dashboard - if (_renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out _)) + if (renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out _)) { SetFocusToAdornment(args.TextView); return; @@ -111,7 +111,7 @@ private async Task ExecuteCommandAsync(RenameCommandArgs args, IUIThreadOperatio return; } - var sessionInfo = await _renameService.StartInlineSessionAsync(document, selectedSpans.Single().Span.ToTextSpan(), cancellationToken).ConfigureAwait(false); + var sessionInfo = await renameService.StartInlineSessionAsync(document, selectedSpans.Single().Span.ToTextSpan(), cancellationToken).ConfigureAwait(false); if (!sessionInfo.CanRename) { await ShowErrorDialogAsync(workspace, sessionInfo.LocalizedErrorMessage).ConfigureAwait(false); @@ -131,7 +131,7 @@ private static bool CanRename(RenameCommandArgs args) private async Task ShowErrorDialogAsync(Workspace workspace, string message) { - await _threadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(); + await threadingContext.JoinableTaskFactory.SwitchToMainThreadAsync(); var notificationService = workspace.Services.GetService(); notificationService.SendNotification(message, title: EditorFeaturesResources.Rename, severity: NotificationSeverity.Error); } diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_ReturnHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_ReturnHandler.cs index db18065f46759..e7d36e424cd9a 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_ReturnHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_ReturnHandler.cs @@ -16,9 +16,9 @@ public CommandState GetCommandState(ReturnKeyCommandArgs args) public bool ExecuteCommand(ReturnKeyCommandArgs args, CommandExecutionContext context) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { - CommitAndSetFocus(_renameService.ActiveSession, args.TextView, context.OperationContext); + CommitAndSetFocus(renameService.ActiveSession, args.TextView, context.OperationContext); return true; } diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SaveHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SaveHandler.cs index 132c8d0f42a5d..6a1b2a8dfb6d5 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SaveHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SaveHandler.cs @@ -14,7 +14,7 @@ public CommandState GetCommandState(SaveCommandArgs args) public bool ExecuteCommand(SaveCommandArgs args, CommandExecutionContext context) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { Commit(context.OperationContext); SetFocusToTextView(args.TextView); diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SelectAllHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SelectAllHandler.cs index 037ebed9e5189..601adef3108c2 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SelectAllHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_SelectAllHandler.cs @@ -21,7 +21,7 @@ public bool ExecuteCommand(SelectAllCommandArgs args, CommandExecutionContext co private bool ExecuteSelectAll(ITextBuffer subjectBuffer, ITextView view) { - if (_renameService.ActiveSession == null) + if (renameService.ActiveSession == null) { return false; } @@ -29,7 +29,7 @@ private bool ExecuteSelectAll(ITextBuffer subjectBuffer, ITextView view) var caretPoint = view.GetCaretPoint(subjectBuffer); if (caretPoint.HasValue) { - if (_renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out var span)) + if (renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out var span)) { if (view.Selection.Start.Position != span.Start.Position || view.Selection.End.Position != span.End.Position) diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_UndoRedoHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_UndoRedoHandler.cs index 3dd653f02acba..5f665da1742a3 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_UndoRedoHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_UndoRedoHandler.cs @@ -18,11 +18,11 @@ public CommandState GetCommandState(RedoCommandArgs args) public bool ExecuteCommand(UndoCommandArgs args, CommandExecutionContext context) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { - for (var i = 0; i < args.Count && _renameService.ActiveSession != null; i++) + for (var i = 0; i < args.Count && renameService.ActiveSession != null; i++) { - _renameService.ActiveSession.UndoManager.Undo(args.SubjectBuffer); + renameService.ActiveSession.UndoManager.Undo(args.SubjectBuffer); } return true; @@ -33,11 +33,11 @@ public bool ExecuteCommand(UndoCommandArgs args, CommandExecutionContext context public bool ExecuteCommand(RedoCommandArgs args, CommandExecutionContext context) { - if (_renameService.ActiveSession != null) + if (renameService.ActiveSession != null) { - for (var i = 0; i < args.Count && _renameService.ActiveSession != null; i++) + for (var i = 0; i < args.Count && renameService.ActiveSession != null; i++) { - _renameService.ActiveSession.UndoManager.Redo(args.SubjectBuffer); + renameService.ActiveSession.UndoManager.Redo(args.SubjectBuffer); } return true; diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_WordDeleteHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_WordDeleteHandler.cs index af47ca63fc252..efbf835488bd9 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_WordDeleteHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler_WordDeleteHandler.cs @@ -29,7 +29,7 @@ public bool ExecuteCommand(WordDeleteToEndCommandArgs args, CommandExecutionCont private bool HandleWordDeleteCommand(ITextBuffer subjectBuffer, ITextView view, bool deleteToStart) { - if (_renameService.ActiveSession == null) + if (renameService.ActiveSession == null) { return false; } @@ -37,7 +37,7 @@ private bool HandleWordDeleteCommand(ITextBuffer subjectBuffer, ITextView view, var caretPoint = view.GetCaretPoint(subjectBuffer); if (caretPoint.HasValue) { - if (_renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out var span)) + if (renameService.ActiveSession.TryGetContainingEditableSpan(caretPoint.Value, out var span)) { int start = caretPoint.Value; int end = caretPoint.Value; From 6e61230801bbc89735109903c4f80c1a2e28c6ce Mon Sep 17 00:00:00 2001 From: Shen Chen Date: Tue, 1 Oct 2024 17:40:07 -0700 Subject: [PATCH 2/2] Inline a call --- .../CommandHandlers/AbstractRenameCommandHandler.cs | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs index 8db2b477e3a70..1418ff7d6b998 100644 --- a/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs +++ b/src/EditorFeatures/Core/InlineRename/CommandHandlers/AbstractRenameCommandHandler.cs @@ -75,8 +75,8 @@ private void HandlePossibleTypingCommand(TArgs args, Action nextHandler, { // It's in a read-only area that is open, so let's commit the rename // and then let the character go through - - CommitIfActiveAndCallNextHandler(args, nextHandler, operationContext); + CommitIfActive(args, operationContext); + nextHandler(); } else { @@ -99,12 +99,6 @@ private void CommitIfActive(EditorCommandArgs args, IUIThreadOperationContext op } } - private void CommitIfActiveAndCallNextHandler(EditorCommandArgs args, Action nextHandler, IUIThreadOperationContext operationContext) - { - CommitIfActive(args, operationContext); - nextHandler(); - } - private void Commit(IUIThreadOperationContext operationContext) { RoslynDebug.AssertNotNull(renameService.ActiveSession);