From 9854857d60db238a1cba1c7ce08c55fd81cb848e Mon Sep 17 00:00:00 2001 From: GrahamTheCoder Date: Mon, 7 Sep 2020 16:39:13 +0100 Subject: [PATCH] Dedupe code --- Vsix/CodeConversion.cs | 11 +++++++++++ Vsix/PasteAsCS.cs | 11 +++++------ Vsix/PasteAsVB.cs | 11 +++++------ 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/Vsix/CodeConversion.cs b/Vsix/CodeConversion.cs index f09d07bc6..b564d43b9 100644 --- a/Vsix/CodeConversion.cs +++ b/Vsix/CodeConversion.cs @@ -8,6 +8,7 @@ using System.Windows; using ICSharpCode.CodeConverter; using ICSharpCode.CodeConverter.Shared; +using ICSharpCode.CodeConverter.VB; using Microsoft.CodeAnalysis.Text; using Microsoft.VisualStudio.LanguageServices; using Microsoft.VisualStudio.Shell; @@ -307,5 +308,15 @@ public static bool IsVBFileName(string fileName) } return false; } + + public async Task ConvertTextBestEffortAsync(CancellationToken cancellationToken) where TLanguageConversion : ILanguageConversion, new() + { + await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + string text = Clipboard.GetText(); + var convertTextOnly = await ProjectConversion.ConvertTextAsync(text, + new TextConversionOptions(DefaultReferences.NetStandard2), + cancellationToken: cancellationToken); + await VisualStudioInteraction.WriteToCurrentWindowAsync(_serviceProvider, convertTextOnly.ConvertedCode); + } } } diff --git a/Vsix/PasteAsCS.cs b/Vsix/PasteAsCS.cs index 5f0beffbe..d1536a2ec 100644 --- a/Vsix/PasteAsCS.cs +++ b/Vsix/PasteAsCS.cs @@ -85,12 +85,11 @@ await VisualStudioInteraction.GetFirstSelectedSpanInCurrentViewAsync(ServiceProv private async Task CodeEditorMenuItemCallbackAsync(CancellationToken cancellationToken) { - await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); - string text = Clipboard.GetText(); - var convertTextOnly = await ProjectConversion.ConvertTextAsync(text, - new TextConversionOptions(DefaultReferences.NetStandard2), - cancellationToken: cancellationToken); - await VisualStudioInteraction.WriteToCurrentWindowAsync(ServiceProvider, convertTextOnly.ConvertedCode); + try { + await _codeConversion.ConvertTextBestEffortAsync(cancellationToken); + } catch (Exception ex) { + await VisualStudioInteraction.ShowExceptionAsync(ex); + } } } } \ No newline at end of file diff --git a/Vsix/PasteAsVB.cs b/Vsix/PasteAsVB.cs index 17a06461d..bc84959c6 100644 --- a/Vsix/PasteAsVB.cs +++ b/Vsix/PasteAsVB.cs @@ -83,12 +83,11 @@ await VisualStudioInteraction.GetFirstSelectedSpanInCurrentViewAsync(ServiceProv private async Task CodeEditorMenuItemCallbackAsync(CancellationToken cancellationToken) { - await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); - string text = Clipboard.GetText(); - var convertTextOnly = await ProjectConversion.ConvertTextAsync(text, - new TextConversionOptions(DefaultReferences.NetStandard2), - cancellationToken: cancellationToken); - await VisualStudioInteraction.WriteToCurrentWindowAsync(ServiceProvider, convertTextOnly.ConvertedCode); + try { + await _codeConversion.ConvertTextBestEffortAsync(cancellationToken); + } catch (Exception ex) { + await VisualStudioInteraction.ShowExceptionAsync(ex); + } } } } \ No newline at end of file