diff --git a/src/cascadia/TerminalApp/AppActionHandlers.cpp b/src/cascadia/TerminalApp/AppActionHandlers.cpp index 699850873d..4a16842b03 100644 --- a/src/cascadia/TerminalApp/AppActionHandlers.cpp +++ b/src/cascadia/TerminalApp/AppActionHandlers.cpp @@ -911,7 +911,12 @@ namespace winrt::TerminalApp::implementation const auto selections{ termControl.SelectedText(true) }; if (selections.Size() == 1) // TODO! should theoretically be able to work for multiple lines of selection { - const auto finalString = queryUrl + Windows::Foundation::Uri::EscapeComponent(selections.GetAt(0)); + auto selectedText = selections.GetAt(0); + if (realArgs.WrapWithQuotes()) + { + selectedText = L"\"" + selectedText + L"\""; + } + const auto finalString = queryUrl + Windows::Foundation::Uri::EscapeComponent(selectedText); winrt::Microsoft::Terminal::Control::OpenHyperlinkEventArgs shortcut{ finalString }; _OpenHyperlinkHandler(termControl, shortcut); args.Handled(true); diff --git a/src/cascadia/TerminalSettingsModel/ActionArgs.h b/src/cascadia/TerminalSettingsModel/ActionArgs.h index 1bb28e3dd1..ba44062f95 100644 --- a/src/cascadia/TerminalSettingsModel/ActionArgs.h +++ b/src/cascadia/TerminalSettingsModel/ActionArgs.h @@ -202,8 +202,9 @@ private: X(winrt::hstring, Name, "name", false, L"") //////////////////////////////////////////////////////////////////////////////// -#define SEARCH_FOR_TEXT_ARGS(X) \ - X(winrt::hstring, QueryUrl, "queryUrl", false, L"") +#define SEARCH_FOR_TEXT_ARGS(X) \ + X(winrt::hstring, QueryUrl, "queryUrl", false, L"") \ + X(bool, WrapWithQuotes, "wrapWithQuotes", false, true) //TODO! this should have some validation! // Maybe in post though. Maybe at runtime make sure QueryUrl starts with "http:" diff --git a/src/cascadia/TerminalSettingsModel/ActionArgs.idl b/src/cascadia/TerminalSettingsModel/ActionArgs.idl index ffc398c05c..a45cdad439 100644 --- a/src/cascadia/TerminalSettingsModel/ActionArgs.idl +++ b/src/cascadia/TerminalSettingsModel/ActionArgs.idl @@ -330,6 +330,7 @@ namespace Microsoft.Terminal.Settings.Model [default_interface] runtimeclass SearchForTextArgs : IActionArgs { String QueryUrl { get; }; + Boolean WrapWithQuotes { get; }; }; [default_interface] runtimeclass GlobalSummonArgs : IActionArgs