Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5f05e3a6
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5f05e3a6
编写于
8月 12, 2017
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #32325, avoid **/** pattern in search glob
上级
c185e7d4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
33 addition
and
6 deletion
+33
-6
src/vs/workbench/parts/search/common/queryBuilder.ts
src/vs/workbench/parts/search/common/queryBuilder.ts
+9
-1
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
...s/workbench/parts/search/test/common/queryBuilder.test.ts
+24
-5
未找到文件。
src/vs/workbench/parts/search/common/queryBuilder.ts
浏览文件 @
5f05e3a6
...
...
@@ -106,7 +106,7 @@ export class QueryBuilder {
p
=
'
*
'
+
p
;
// convert ".js" to "*.js"
}
return
strings
.
format
(
'
{**/{0}/**,**/{0}}
'
,
p
);
// convert foo to {foo/**,**/foo} to cover files and folders
return
toGlobalGlob
(
p
);
});
const
result
:
ISearchPathsResult
=
{};
...
...
@@ -297,3 +297,11 @@ function splitGlobPattern(pattern: string): string[] {
.
map
(
s
=>
s
.
trim
())
.
filter
(
s
=>
!!
s
.
length
);
}
/**
* Avoid double ** pattern, see https://github.com/Microsoft/vscode/issues/32325
*/
function
toGlobalGlob
(
pattern
:
string
):
string
{
const
globalGlob
=
strings
.
format
(
'
{**/{0}/**,**/{0}}
'
,
pattern
);
// convert foo to {**/foo/**,**/foo} to cover files and folders
return
globalGlob
.
replace
(
/
\*\*([/\\]\*\*)
+/g
,
'
**
'
);
}
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
浏览文件 @
5f05e3a6
...
...
@@ -294,7 +294,7 @@ suite('QueryBuilder', () => {
[
ROOT_1_URI
],
{
extraFileResources
:
[
getUri
(
'
/foo/bar.js
'
)],
excludePattern
:
'
*
*/*
.js
'
excludePattern
:
'
*.js
'
}
),
<
ISearchQuery
>
{
...
...
@@ -302,7 +302,7 @@ suite('QueryBuilder', () => {
folderQueries
:
[{
folder
:
ROOT_1_URI
}],
excludePattern
:
patternsToIExpression
(
globalGlob
(
'
*
*/*
.js
'
)),
excludePattern
:
patternsToIExpression
(
globalGlob
(
'
*.js
'
)),
type
:
QueryType
.
Text
,
useRipgrep
:
true
});
...
...
@@ -313,7 +313,7 @@ suite('QueryBuilder', () => {
[
ROOT_1_URI
],
{
extraFileResources
:
[
getUri
(
'
/foo/bar.js
'
)],
includePattern
:
'
*
*/*
.txt
'
includePattern
:
'
*.txt
'
}
),
<
ISearchQuery
>
{
...
...
@@ -321,7 +321,7 @@ suite('QueryBuilder', () => {
folderQueries
:
[{
folder
:
ROOT_1_URI
}],
includePattern
:
patternsToIExpression
(
globalGlob
(
'
*
*/*
.txt
'
)),
includePattern
:
patternsToIExpression
(
globalGlob
(
'
*.txt
'
)),
type
:
QueryType
.
Text
,
useRipgrep
:
true
});
...
...
@@ -348,6 +348,24 @@ suite('QueryBuilder', () => {
].
forEach
(([
includePattern
,
expectedPatterns
])
=>
testSimpleIncludes
(
<
string
>
includePattern
,
<
string
[]
>
expectedPatterns
));
});
test
(
'
double-star patterns are normalized
'
,
()
=>
{
function
testLiteralIncludes
(
includePattern
:
string
,
expectedPattern
:
string
):
void
{
assert
.
deepEqual
(
queryBuilder
.
parseSearchPaths
(
includePattern
),
<
ISearchPathsResult
>
{
pattern
:
patternsToIExpression
(
expectedPattern
)
},
includePattern
);
}
[
[
'
**/*.*
'
,
'
{**/*.*/**,**/*.*}
'
],
[
'
foo/**
'
,
'
{**/foo/**,**/foo/**}
'
],
[
'
**/**/foo
'
,
'
{**/foo/**,**/foo}
'
],
[
'
**/**
'
,
'
{**,**}
'
]
].
forEach
(([
includePattern
,
expectedPattern
])
=>
testLiteralIncludes
(
includePattern
,
expectedPattern
));
});
function
testIncludes
(
includePattern
:
string
,
expectedResult
:
ISearchPathsResult
):
void
{
assertEqualSearchPathResults
(
queryBuilder
.
parseSearchPaths
(
includePattern
),
...
...
@@ -645,7 +663,8 @@ function cleanUndefinedQueryValues(q: any): void {
}
function
globalGlob
(
str
:
string
):
string
{
return
`{**/
${
str
}
/**,**/
${
str
}
}`
;
const
globalGlob
=
`{**/
${
str
}
/**,**/
${
str
}
}`
;
return
globalGlob
.
replace
(
/
\*\*([/\\]\*\*)
+/g
,
'
**
'
);
}
function
patternsToIExpression
(...
patterns
:
string
[]):
IExpression
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录