Path: blob/main/extensions/copilot/test/simulation/fixtures/doc-ts-large-fn/resolver.ts
13399 views
function handleRemovals(rules: ResolvedKeybindingItem[]): ResolvedKeybindingItem[] {1// Do a first pass and construct a hash-map for removals2const removals = new Map</* commandId */ string, ResolvedKeybindingItem[]>();3for (let i = 0, len = rules.length; i < len; i++) {4const rule = rules[i];5if (rule.command && rule.command.charAt(0) === '-') {6const command = rule.command.substring(1);7if (!removals.has(command)) {8removals.set(command, [rule]);9} else {10removals.get(command)!.push(rule);11}12}13}1415if (removals.size === 0) {16// There are no removals17return rules;18}1920// Do a second pass and keep only non-removed keybindings21const result: ResolvedKeybindingItem[] = [];22for (let i = 0, len = rules.length; i < len; i++) {23const rule = rules[i];2425if (!rule.command || rule.command.length === 0) {26result.push(rule);27continue;28}29if (rule.command.charAt(0) === '-') {30continue;31}32const commandRemovals = removals.get(rule.command);33if (!commandRemovals || !rule.isDefault) {34result.push(rule);35continue;36}37let isRemoved = false;38for (const commandRemoval of commandRemovals) {39const when = commandRemoval.when;40if (this._isTargetedForRemoval(rule, commandRemoval.chords, when)) {41isRemoved = true;42break;43}44}45if (!isRemoved) {46result.push(rule);47continue;48}49}50return result;51}525354