Polish platform file extension boosts

Fixes #222408
This commit is contained in:
Daniel Imms
2024-07-21 07:09:13 -07:00
parent 0eec43797f
commit bc8a1513fa
@@ -195,13 +195,16 @@ export class SimpleCompletionModel {
if (score !== 0) {
return score;
}
// If they're files, boost extensions depending on the operating system
score = fileExtScore(b.fileExtLow) - fileExtScore(a.fileExtLow);
if (score !== 0) {
return score;
// If they're files at the start of the command line, boost extensions depending on the operating system
const isFileCommand = !formattedLeadingLineContent.includes(' ');
if (isFileCommand) {
score = fileExtScore(b.fileExtLow) - fileExtScore(a.fileExtLow);
if (score !== 0) {
return score;
}
}
// Then by file extension length ascending
score = b.fileExtLow.length - a.fileExtLow.length;
score = a.fileExtLow.length - b.fileExtLow.length;
}
return score;
});
@@ -216,14 +219,39 @@ export class SimpleCompletionModel {
}
// TODO: This should be based on the process OS, not the local OS
// File score boosts for specific file extensions on Windows. This only applies when the file is the
// _first_ part of the command line.
const fileExtScores = new Map<string, number>(isWindows ? [
// Pwsh
['ps1', 0.09],
['bat', 0.08],
['sh', -0.09]
// Windows
['bat', 0.05],
['cmd', 0.05],
// Non-Windows
['sh', -0.05],
['bash', -0.05],
['zsh', -0.05],
['fish', -0.05],
['csh', -0.06], // C shell
['ksh', -0.06], // Korn shell
// Scripting language files are excluded here as the standard behavior on Windows will just open
// the file in a text editor, not run the file
] : [
['ps1', 0.09],
['bat', -0.08],
['sh', 0.08],
// Pwsh
['ps1', 0.05],
// Windows
['bat', -0.05],
['cmd', -0.05],
// Non-Windows
['sh', 0.05],
['bash', 0.05],
['zsh', 0.05],
['fish', 0.05],
['csh', 0.04], // C shell
['ksh', 0.04], // Korn shell
// Scripting languages
['py', 0.05], // Python
['pl', 0.05], // Perl
]);
function fileExtScore(ext: string): number {