From d35bc4cee6fc75538d87a79d1065e833c6a771e1 Mon Sep 17 00:00:00 2001 From: Carlos Zamora Date: Thu, 9 Oct 2025 14:27:41 -0700 Subject: [PATCH] Update WinGet CNF for exact command matching (#19432) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary of the Pull Request Update the WinGet CNF package search to match that of the updated PowerShell WinGet CNF module. Now, we'll only search for matching commands instead of by name and moniker. ## References and Relevant Issues https://github.com/microsoft/winget-command-not-found/pull/29 ## Validation Steps Performed ✅ In CMD, type "vim" and vim packages are suggested (cherry picked from commit 819987c90e17dbf6301c777d2ec553a7d115db75) Service-Card-Id: PVTI_lADOAF3p4s4BBcTlzgfuACY Service-Version: 1.24 --- src/cascadia/TerminalApp/TerminalPage.cpp | 24 ++++------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/src/cascadia/TerminalApp/TerminalPage.cpp b/src/cascadia/TerminalApp/TerminalPage.cpp index 52cb20c2a0..058979717b 100644 --- a/src/cascadia/TerminalApp/TerminalPage.cpp +++ b/src/cascadia/TerminalApp/TerminalPage.cpp @@ -3216,33 +3216,17 @@ namespace winrt::TerminalApp::implementation } PackageCatalog catalog = connectResult.PackageCatalog(); - // clang-format off - static constexpr std::array searches{ { - { .Field = PackageMatchField::Command, .MatchOption = PackageFieldMatchOption::StartsWithCaseInsensitive }, - { .Field = PackageMatchField::Name, .MatchOption = PackageFieldMatchOption::ContainsCaseInsensitive }, - { .Field = PackageMatchField::Moniker, .MatchOption = PackageFieldMatchOption::ContainsCaseInsensitive } } }; - // clang-format on - PackageMatchFilter filter = WindowsPackageManagerFactory::CreatePackageMatchFilter(); filter.Value(query); + filter.Field(PackageMatchField::Command); + filter.Option(PackageFieldMatchOption::Equals); FindPackagesOptions options = WindowsPackageManagerFactory::CreateFindPackagesOptions(); options.Filters().Append(filter); options.ResultLimit(20); - IVectorView pkgList; - for (const auto& search : searches) - { - filter.Field(search.Field); - filter.Option(search.MatchOption); - - const auto result = co_await catalog.FindPackagesAsync(options); - pkgList = result.Matches(); - if (pkgList.Size() > 0) - { - break; - } - } + const auto result = co_await catalog.FindPackagesAsync(options); + const IVectorView pkgList = result.Matches(); co_return pkgList; }