Skip to content

Commit e2b75ab

Browse files
Make Explorer Find widget work in 1.94 as long as proposed APIs are enabled (fix #1443) (#1444)
* Make Explorer Find widget work in 1.94 as long as proposed APIs are enabled (fix #1443) * Adopt feedback
1 parent 0b00c74 commit e2b75ab

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/providers/FileSystemProvider/FileSearchProvider.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ export class FileSearchProvider implements vscode.FileSearchProvider {
1818
): Promise<vscode.Uri[]> {
1919
let counter = 0;
2020
let pattern = query.pattern.charAt(0) == "/" ? query.pattern.slice(1) : query.pattern;
21+
22+
// Drop a leading **/ from the glob pattern if it exists (added by Find widget of Explorer tree, which since 1.94 uses FileSearchProvider)
23+
if (pattern.startsWith("**/")) {
24+
pattern = pattern.slice(3);
25+
}
2126
const params = new URLSearchParams(options.folder.query);
2227
const csp = params.has("csp") && ["", "1"].includes(params.get("csp"));
2328
if (params.has("project") && params.get("project").length) {
@@ -44,13 +49,13 @@ export class FileSearchProvider implements vscode.FileSearchProvider {
4449
// When this is called without a query.pattern, every file is supposed to be returned, so do not provide a filter
4550
let filter = "";
4651
if (pattern.length) {
47-
pattern = !csp ? query.pattern.replace(/\//g, ".") : query.pattern;
48-
if (pattern.includes("_") || pattern.includes("%")) {
49-
// Need to escape any % or _ characters
50-
filter = `Name LIKE '%${pattern.replace(/(_|%|\\)/g, "\\$1")}%' ESCAPE '\\'`;
51-
} else {
52-
filter = `Name LIKE '%${pattern}%'`;
53-
}
52+
pattern = !csp ? pattern.replace(/\//g, ".") : pattern;
53+
filter = `Name LIKE '%${pattern
54+
// Escape % or _ characters
55+
.replace(/(_|%|\\)/g, "\\$1")
56+
// Change glob syntax to SQL LIKE syntax
57+
.replace(/\*/g, "%")
58+
.replace(/\?/g, "_")}%' ESCAPE '\\'`;
5459
}
5560
if (token.isCancellationRequested) {
5661
return;

0 commit comments

Comments
 (0)