Skip to content

Commit

Permalink
Improve sorting of vendor results for available packages
Browse files Browse the repository at this point in the history
  • Loading branch information
Seldaek committed May 13, 2022
1 parent 6aa7e15 commit 55dc808
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions src/Composer/Command/CompletionTrait.php
Expand Up @@ -126,14 +126,31 @@ private function suggestAvailablePackage(int $max = 99): \Closure
$vendors = false;
}

$results = array_column(array_slice($results, 0, $max), 'name');
$results = array_column($results, 'name');

if ($vendors) {
$results = array_map(function (string $name): string {
return $name.'/';
}, $results);

// sort shorter results first to avoid auto-expanding the completion to a longer string than needed
usort($results, function (string $a, string $b) {
return \strlen($a) - \strlen($b);
});

$pinned = [];

// ensure if the input is an exact match that it is always in the result set
$completionInput = $input->getCompletionValue().'/';
if (in_array($completionInput, $results, true)) {
$pinned[] = $completionInput;
array_splice($results, array_search($completionInput, $results, true), 1);
}

return array_merge($pinned, array_slice($results, 0, $max - \count($pinned)));
}

return $results;
return array_slice($results, 0, $max);
};
}

Expand Down

0 comments on commit 55dc808

Please sign in to comment.