Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
7683cb4b
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,发现更多精彩内容 >>
提交
7683cb4b
编写于
4月 18, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Transition combined include/exclude patterns back to split include/exclude boxes
For #46315
上级
fac00956
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
100 addition
and
4 deletion
+100
-4
src/vs/workbench/parts/search/browser/searchView.ts
src/vs/workbench/parts/search/browser/searchView.ts
+33
-4
src/vs/workbench/parts/search/common/queryBuilder.ts
src/vs/workbench/parts/search/common/queryBuilder.ts
+22
-0
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
...s/workbench/parts/search/test/common/queryBuilder.test.ts
+45
-0
未找到文件。
src/vs/workbench/parts/search/browser/searchView.ts
浏览文件 @
7683cb4b
...
...
@@ -183,14 +183,43 @@ export class SearchView extends Viewlet implements IViewlet, IPanel {
this
.
createSearchWidget
(
this
.
searchWidgetsContainer
);
const
filePatterns
=
this
.
viewletSettings
[
'
query.filePatterns
'
]
||
''
;
cons
t
patternExclusions
=
this
.
viewletSettings
[
'
query.folderExclusions
'
]
||
''
;
const
patternExclusionsHistory
=
this
.
viewletSettings
[
'
query.folderExclusionsHistory
'
]
||
[];
cons
t
patternIncludes
=
this
.
viewletSettings
[
'
query.folderIncludes
'
]
||
''
;
const
patternIncludesHistory
=
this
.
viewletSettings
[
'
query.folderIncludesHistory
'
]
||
[];
le
t
patternExclusions
=
this
.
viewletSettings
[
'
query.folderExclusions
'
]
||
''
;
const
patternExclusionsHistory
:
string
[]
=
this
.
viewletSettings
[
'
query.folderExclusionsHistory
'
]
||
[];
le
t
patternIncludes
=
this
.
viewletSettings
[
'
query.folderIncludes
'
]
||
''
;
let
patternIncludesHistory
:
string
[]
=
this
.
viewletSettings
[
'
query.folderIncludesHistory
'
]
||
[];
const
queryDetailsExpanded
=
this
.
viewletSettings
[
'
query.queryDetailsExpanded
'
]
||
''
;
const
useExcludesAndIgnoreFiles
=
typeof
this
.
viewletSettings
[
'
query.useExcludesAndIgnoreFiles
'
]
===
'
boolean
'
?
this
.
viewletSettings
[
'
query.useExcludesAndIgnoreFiles
'
]
:
true
;
// Transition history from 1.22 combined include+exclude, to split include/exclude histories
const
patternIncludesHistoryWithoutExcludes
:
string
[]
=
[];
const
patternExcludesHistoryFromIncludes
:
string
[]
=
[];
patternIncludesHistory
.
forEach
(
historyEntry
=>
{
const
includeExclude
=
this
.
queryBuilder
.
parseIncludeExcludePattern
(
historyEntry
);
if
(
includeExclude
.
includePattern
)
{
patternIncludesHistoryWithoutExcludes
.
push
(
includeExclude
.
includePattern
);
}
if
(
includeExclude
.
excludePattern
)
{
patternExcludesHistoryFromIncludes
.
push
(
includeExclude
.
excludePattern
);
}
});
patternIncludesHistory
=
patternIncludesHistoryWithoutExcludes
;
patternExclusionsHistory
.
push
(...
patternExcludesHistoryFromIncludes
);
// Split combined include/exclude to split include/exclude boxes
const
includeExclude
=
this
.
queryBuilder
.
parseIncludeExcludePattern
(
patternIncludes
);
patternIncludes
=
includeExclude
.
includePattern
||
''
;
if
(
includeExclude
.
excludePattern
)
{
if
(
patternExclusions
)
{
patternExclusions
+=
'
,
'
+
includeExclude
.
excludePattern
;
}
else
{
patternExclusions
=
includeExclude
.
excludePattern
;
}
}
this
.
queryDetails
=
this
.
searchWidgetsContainer
.
div
({
'
class
'
:
[
'
query-details
'
]
},
(
builder
)
=>
{
builder
.
div
({
'
class
'
:
'
more
'
,
'
tabindex
'
:
0
,
'
role
'
:
'
button
'
,
'
title
'
:
nls
.
localize
(
'
moreSearch
'
,
"
Toggle Search Details
"
)
})
.
on
(
dom
.
EventType
.
CLICK
,
(
e
)
=>
{
...
...
src/vs/workbench/parts/search/common/queryBuilder.ts
浏览文件 @
7683cb4b
...
...
@@ -182,6 +182,28 @@ export class QueryBuilder {
return
Object
.
keys
(
excludeExpression
).
length
?
excludeExpression
:
undefined
;
}
/**
* A helper that splits positive and negative patterns from a string that combines both.
*/
public
parseIncludeExcludePattern
(
pattern
:
string
):
{
includePattern
?:
string
,
excludePattern
?:
string
}
{
const
grouped
=
collections
.
groupBy
(
splitGlobPattern
(
pattern
),
s
=>
strings
.
startsWith
(
s
,
'
!
'
)
?
'
excludePattern
'
:
'
includePattern
'
);
const
result
=
{};
if
(
grouped
.
includePattern
)
{
result
[
'
includePattern
'
]
=
grouped
.
includePattern
.
join
(
'
,
'
);
}
if
(
grouped
.
excludePattern
)
{
result
[
'
excludePattern
'
]
=
grouped
.
excludePattern
.
map
(
s
=>
strings
.
ltrim
(
s
,
'
!
'
))
.
join
(
'
,
'
);
}
return
result
;
}
private
mergeExcludesFromFolderQueries
(
folderQueries
:
IFolderQuery
[]):
glob
.
IExpression
|
undefined
{
const
mergedExcludes
=
folderQueries
.
reduce
((
merged
:
glob
.
IExpression
,
fq
:
IFolderQuery
)
=>
{
if
(
fq
.
excludePattern
)
{
...
...
src/vs/workbench/parts/search/test/common/queryBuilder.test.ts
浏览文件 @
7683cb4b
...
...
@@ -697,6 +697,51 @@ suite('QueryBuilder', () => {
assert
(
query
.
sortByScore
);
});
});
suite
(
'
parseIncludeExcludePattern
'
,
()
=>
{
test
(
'
nothing
'
,
()
=>
{
assert
.
deepEqual
(
queryBuilder
.
parseIncludeExcludePattern
(
''
),
{});
});
test
(
'
includes
'
,
()
=>
{
assert
.
deepEqual
(
queryBuilder
.
parseIncludeExcludePattern
(
'
src
'
),
{
includePattern
:
'
src
'
});
assert
.
deepEqual
(
queryBuilder
.
parseIncludeExcludePattern
(
'
src, test
'
),
{
includePattern
:
'
src, test
'
});
});
test
(
'
excludes
'
,
()
=>
{
assert
.
deepEqual
(
queryBuilder
.
parseIncludeExcludePattern
(
'
!src
'
),
{
excludePattern
:
'
src
'
});
assert
.
deepEqual
(
queryBuilder
.
parseIncludeExcludePattern
(
'
!src, !test
'
),
{
excludePattern
:
'
src, test
'
});
});
test
(
'
includes and excludes
'
,
()
=>
{
assert
.
deepEqual
(
queryBuilder
.
parseIncludeExcludePattern
(
'
!src, test, !foo, bar
'
),
{
includePattern
:
'
test, bar
'
,
excludePattern
:
'
src, foo
'
});
});
});
});
function
assertEqualQueries
(
actual
:
ISearchQuery
,
expected
:
ISearchQuery
):
void
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录