Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
75fd5a7f
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,发现更多精彩内容 >>
提交
75fd5a7f
编写于
7月 24, 2017
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix QueryBuilder issues with trailing / and
file:///
上级
3afa94a4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
27 addition
and
21 deletion
+27
-21
src/vs/workbench/parts/search/common/queryBuilder.ts
src/vs/workbench/parts/search/common/queryBuilder.ts
+8
-2
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
...s/workbench/parts/search/test/common/queryBuilder.test.ts
+19
-19
未找到文件。
src/vs/workbench/parts/search/common/queryBuilder.ts
浏览文件 @
75fd5a7f
...
...
@@ -141,7 +141,7 @@ export class QueryBuilder {
const
pathPortions
=
this
.
expandAbsoluteSearchPaths
(
pathPortion
);
return
pathPortions
.
map
(
searchPath
=>
{
return
<
ISearchPathPattern
>
{
searchPath
:
uri
.
pars
e
(
searchPath
),
searchPath
:
uri
.
fil
e
(
searchPath
),
pattern
:
globPortion
};
});
...
...
@@ -198,8 +198,14 @@ function splitGlobFromPath(searchPath: string): { pathPortion: string, globPorti
const
globCharIdx
=
globCharMatch
.
index
;
const
lastSlashMatch
=
searchPath
.
substr
(
0
,
globCharIdx
).
match
(
/
[/
|
\\][^/\\]
*$/
);
if
(
lastSlashMatch
)
{
let
pathPortion
=
searchPath
.
substr
(
0
,
lastSlashMatch
.
index
);
if
(
!
pathPortion
.
match
(
/
[/\\]
/
))
{
// If the last slash was the only slash, then we now have '' or 'C:'. Append a slash.
pathPortion
+=
'
/
'
;
}
return
{
pathPortion
:
searchPath
.
substr
(
0
,
lastSlashMatch
.
index
)
||
'
/
'
,
pathPortion
,
globPortion
:
searchPath
.
substr
(
lastSlashMatch
.
index
+
1
)
};
}
...
...
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
浏览文件 @
75fd5a7f
...
...
@@ -17,10 +17,10 @@ import { TestContextService } from 'vs/workbench/test/workbenchTestServices';
import
{
ISearchQuery
,
QueryType
,
IPatternInfo
}
from
'
vs/platform/search/common/search
'
;
suite
.
only
(
'
SearchQuery
'
,
()
=>
{
suite
(
'
QueryBuilder
'
,
()
=>
{
const
PATTERN_INFO
:
IPatternInfo
=
{
pattern
:
'
a
'
};
const
ROOT_1
=
fixPath
(
'
/foo/root1
'
);
const
ROOT_1_URI
=
uri
.
parse
(
ROOT_1
);
const
ROOT_1_URI
=
getUri
(
ROOT_1
);
let
instantiationService
:
TestInstantiationService
;
let
queryBuilder
:
QueryBuilder
;
...
...
@@ -102,56 +102,56 @@ suite.only('SearchQuery', () => {
test
(
'
absolute includes
'
,
()
=>
{
[
[
'
/foo/bar
'
,
fixPath
(
'
/foo/bar
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/foo/bar
'
)
}]
searchPaths
:
[{
searchPath
:
getUri
(
'
/foo/bar
'
)
}]
}
],
[
'
/foo/bar,
a
'
,
fixPath
(
'
/foo/bar
'
)
+
'
,
'
+
'
a
'
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/foo/bar
'
)
}],
searchPaths
:
[{
searchPath
:
getUri
(
'
/foo/bar
'
)
}],
includePattern
:
patternsToIExpression
(
globalGlob
(
'
a
'
))
}
],
[
'
/foo/bar, /1/2
'
,
fixPath
(
'
/foo/bar
'
)
+
'
,
'
+
fixPath
(
'
/1/2
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/foo/bar
'
)
},
{
searchPath
:
uri
.
parse
(
'
/1/2
'
)
}]
searchPaths
:
[{
searchPath
:
getUri
(
'
/foo/bar
'
)
},
{
searchPath
:
getUri
(
'
/1/2
'
)
}]
}
],
[
'
/foo/bar/**/*.ts
'
,
fixPath
(
'
/foo/bar/**/*.ts
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/foo/bar
'
),
searchPath
:
getUri
(
'
/foo/bar
'
),
pattern
:
'
**/*.ts
'
}]
}
],
[
'
/foo/bar/*a/b/c
'
,
fixPath
(
'
/foo/bar/*a/b/c
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/foo/bar
'
),
searchPath
:
getUri
(
'
/foo/bar
'
),
pattern
:
'
*a/b/c
'
}]
}
],
[
'
/*a/b/c
'
,
fixPath
(
'
/*a/b/c
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/
'
),
searchPath
:
getUri
(
'
/
'
),
pattern
:
'
*a/b/c
'
}]
}
],
[
'
/foo/{b,c}ar
'
,
fixPath
(
'
/foo/{b,c}ar
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[{
searchPath
:
uri
.
parse
(
'
/foo
'
),
searchPath
:
getUri
(
'
/foo
'
),
pattern
:
'
{b,c}ar
'
}]
}
...
...
@@ -179,7 +179,7 @@ suite.only('SearchQuery', () => {
}
],
[
'
./a/*b/c,
/project/foo
'
,
'
./a/*b/c,
'
+
fixPath
(
'
/project/foo
'
)
,
<
ISearchPathsResult
>
{
searchPaths
:
[
{
...
...
@@ -329,11 +329,11 @@ function patternsToIExpression(...patterns: string[]): IExpression {
}
function
getUri
(
slashPath
:
string
):
uri
{
return
uri
.
pars
e
(
fixPath
(
slashPath
));
return
uri
.
fil
e
(
fixPath
(
slashPath
));
}
function
fixPath
(
slashPath
:
string
):
string
{
return
process
.
platform
===
'
win32
'
?
paths
.
join
(
'
c:
'
,
...
slashPath
.
split
(
'
/
'
))
:
(
slashPath
.
match
(
/^c:/
)
?
slashPath
:
paths
.
join
(
'
c:
'
,
...
slashPath
.
split
(
'
/
'
)
))
:
slashPath
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录