From 633642699a879420564163997b70aea9897aa899 Mon Sep 17 00:00:00 2001 From: FernandoAscencio Date: Wed, 29 Mar 2023 15:34:11 -0400 Subject: [PATCH] keybindings: search improvement improvement that aims to reduce the number of result when searching keys in keybindings. Signed-Off-By: FernandoAscencio --- packages/keymaps/src/browser/keybindings-widget.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/keymaps/src/browser/keybindings-widget.tsx b/packages/keymaps/src/browser/keybindings-widget.tsx index 84767e4923776..70408c13fd52b 100644 --- a/packages/keymaps/src/browser/keybindings-widget.tsx +++ b/packages/keymaps/src/browser/keybindings-widget.tsx @@ -211,7 +211,7 @@ export class KeybindingWidget extends ReactWidget implements StatefulWidget { protected formatAndMatchKeybinding(item: KeybindingItem, queryItems: string[]): boolean { if (item.keybinding) { - let match = false; + const unmatchedTerms = queryItems.filter(Boolean); const segments = this.keybindingRegistry.resolveKeybinding(item.keybinding).reduce((collection, code, codeIndex) => { if (codeIndex !== 0) { // Two non-breaking spaces. @@ -224,14 +224,15 @@ export class KeybindingWidget extends ReactWidget implements StatefulWidget { if (chunkIndex !== 0) { collection.push({ value: '+', match: false, key: false }); } - const chunkMatches = queryItems.includes(matchChunks[chunkIndex].toLocaleLowerCase()); - match ||= chunkMatches; + const indexOfTerm = unmatchedTerms.indexOf(matchChunks[chunkIndex].toLocaleLowerCase()); + const chunkMatches = indexOfTerm > -1; + if (chunkMatches) { unmatchedTerms.splice(indexOfTerm, 1); } collection.push({ value: chunk, match: chunkMatches, key: true }); }); return collection; }, []); item.labels.keybinding = { value: item.labels.keybinding.value, segments }; - return match; + return !unmatchedTerms.length; } item.labels.keybinding = { value: '' }; return false;