Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
c42e07f0
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,发现更多精彩内容 >>
提交
c42e07f0
编写于
9月 04, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #57619
上级
5569739e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
108 addition
and
17 deletion
+108
-17
src/vs/workbench/parts/preferences/browser/settingsEditor2.ts
...vs/workbench/parts/preferences/browser/settingsEditor2.ts
+7
-15
src/vs/workbench/parts/preferences/browser/settingsTreeModels.ts
...workbench/parts/preferences/browser/settingsTreeModels.ts
+27
-1
src/vs/workbench/parts/preferences/test/browser/settingsTreeModels.test.ts
...parts/preferences/test/browser/settingsTreeModels.test.ts
+74
-1
未找到文件。
src/vs/workbench/parts/preferences/browser/settingsEditor2.ts
浏览文件 @
c42e07f0
...
...
@@ -39,7 +39,7 @@ import { PreferencesEditor } from 'vs/workbench/parts/preferences/browser/prefer
import
{
SettingsTarget
,
SettingsTargetsWidget
}
from
'
vs/workbench/parts/preferences/browser/preferencesWidgets
'
;
import
{
commonlyUsedData
,
tocData
}
from
'
vs/workbench/parts/preferences/browser/settingsLayout
'
;
import
{
resolveExtensionsSettings
,
resolveSettingsTree
,
SettingsDataSource
,
SettingsRenderer
,
SettingsTree
,
SimplePagedDataSource
}
from
'
vs/workbench/parts/preferences/browser/settingsTree
'
;
import
{
countSettingGroupChildrenWithPredicate
,
ISettingsEditorViewState
,
MODIFIED_SETTING_TAG
,
ONLINE_SERVICES_SETTING_TAG
,
SearchResultIdx
,
SearchResultModel
,
SettingsTreeGroupElement
,
SettingsTreeModel
,
SettingsTreeSettingElement
}
from
'
vs/workbench/parts/preferences/browser/settingsTreeModels
'
;
import
{
countSettingGroupChildrenWithPredicate
,
ISettingsEditorViewState
,
MODIFIED_SETTING_TAG
,
ONLINE_SERVICES_SETTING_TAG
,
SearchResultIdx
,
SearchResultModel
,
SettingsTreeGroupElement
,
SettingsTreeModel
,
SettingsTreeSettingElement
,
parseQuery
}
from
'
vs/workbench/parts/preferences/browser/settingsTreeModels
'
;
import
{
TOCRenderer
,
TOCTree
,
TOCTreeModel
}
from
'
vs/workbench/parts/preferences/browser/tocTree
'
;
import
{
CONTEXT_SETTINGS_EDITOR
,
CONTEXT_SETTINGS_SEARCH_FOCUS
,
CONTEXT_TOC_ROW_FOCUS
,
IPreferencesSearchService
,
ISearchProvider
}
from
'
vs/workbench/parts/preferences/common/preferences
'
;
import
{
IEditorGroup
}
from
'
vs/workbench/services/group/common/editorGroupsService
'
;
...
...
@@ -99,8 +99,6 @@ export class SettingsEditor2 extends BaseEditor {
private
scheduledRefreshes
:
Map
<
string
,
DOM
.
IFocusTracker
>
;
private
tagRegex
=
/
(
^|
\s)
@tag:
(
"
([^
"
]
*
)
"|
[^
"
]\S
*
)
/g
;
/** Don't spam warnings */
private
hasWarnedMissingSettings
:
boolean
;
...
...
@@ -322,9 +320,9 @@ export class SettingsEditor2 extends BaseEditor {
}
actions
.
push
(
new
Action
(
'
settings.openSettingsJson
'
,
localize
(
'
openSettingsJsonLabel
'
,
"
Open settings.json
"
),
undefined
,
undefined
,
()
=>
{
return
this
.
openSettingsFile
().
then
(
editor
=>
{
const
current
Search
=
this
.
searchWidget
.
getValue
(
);
if
(
editor
instanceof
PreferencesEditor
&&
current
Search
)
{
editor
.
focusSearch
(
current
Search
);
const
current
Query
=
parseQuery
(
this
.
searchWidget
.
getValue
()
);
if
(
editor
instanceof
PreferencesEditor
&&
current
Query
)
{
editor
.
focusSearch
(
current
Query
.
query
);
}
});
}));
...
...
@@ -874,17 +872,11 @@ export class SettingsEditor2 extends BaseEditor {
private
triggerSearch
(
query
:
string
):
TPromise
<
void
>
{
this
.
viewState
.
tagFilters
=
new
Set
<
string
>
();
if
(
query
)
{
query
=
query
.
replace
(
this
.
tagRegex
,
(
_
,
__
,
quotedTag
,
tag
)
=>
{
this
.
viewState
.
tagFilters
.
add
(
tag
||
quotedTag
);
return
''
;
});
query
=
query
.
replace
(
`@
${
MODIFIED_SETTING_TAG
}
`
,
()
=>
{
this
.
viewState
.
tagFilters
.
add
(
MODIFIED_SETTING_TAG
);
return
''
;
});
const
parsedQuery
=
parseQuery
(
query
);
query
=
parsedQuery
.
query
;
parsedQuery
.
tags
.
forEach
(
tag
=>
this
.
viewState
.
tagFilters
.
add
(
tag
));
}
query
=
query
.
trim
();
if
(
query
&&
query
!==
'
@
'
)
{
query
=
this
.
parseSettingFromJSON
(
query
)
||
query
;
return
this
.
triggerFilterPreferences
(
query
);
...
...
src/vs/workbench/parts/preferences/browser/settingsTreeModels.ts
浏览文件 @
c42e07f0
...
...
@@ -484,4 +484,30 @@ export class SearchResultModel extends SettingsTreeModel {
return
flatSettings
;
}
}
\ No newline at end of file
}
export
interface
IParsedQuery
{
tags
:
string
[];
query
:
string
;
}
const
tagRegex
=
/
(
^|
\s)
@tag:
(
"
([^
"
]
*
)
"|
[^
"
]\S
*
)
/g
;
export
function
parseQuery
(
query
:
string
):
IParsedQuery
{
const
tags
:
string
[]
=
[];
query
=
query
.
replace
(
tagRegex
,
(
_
,
__
,
quotedTag
,
tag
)
=>
{
tags
.
push
(
tag
||
quotedTag
);
return
''
;
});
query
=
query
.
replace
(
`@
${
MODIFIED_SETTING_TAG
}
`
,
()
=>
{
tags
.
push
(
MODIFIED_SETTING_TAG
);
return
''
;
});
query
=
query
.
trim
();
return
{
tags
,
query
};
}
src/vs/workbench/parts/preferences/test/browser/settingsTreeModels.test.ts
浏览文件 @
c42e07f0
...
...
@@ -6,7 +6,7 @@
'
use strict
'
;
import
*
as
assert
from
'
assert
'
;
import
{
settingKeyToDisplayFormat
}
from
'
vs/workbench/parts/preferences/browser/settingsTreeModels
'
;
import
{
settingKeyToDisplayFormat
,
parseQuery
,
IParsedQuery
}
from
'
vs/workbench/parts/preferences/browser/settingsTreeModels
'
;
suite
(
'
SettingsTree
'
,
()
=>
{
test
(
'
settingKeyToDisplayFormat
'
,
()
=>
{
...
...
@@ -104,4 +104,77 @@ suite('SettingsTree', () => {
label
:
'
Etc
'
});
});
test
(
'
parseQuery
'
,
()
=>
{
function
testParseQuery
(
input
:
string
,
expected
:
IParsedQuery
)
{
assert
.
deepEqual
(
parseQuery
(
input
),
expected
,
input
);
}
testParseQuery
(
''
,
<
IParsedQuery
>
{
tags
:
[],
query
:
''
});
testParseQuery
(
'
@modified
'
,
<
IParsedQuery
>
{
tags
:
[
'
modified
'
],
query
:
''
});
testParseQuery
(
'
@tag:foo
'
,
<
IParsedQuery
>
{
tags
:
[
'
foo
'
],
query
:
''
});
testParseQuery
(
'
@modified foo
'
,
<
IParsedQuery
>
{
tags
:
[
'
modified
'
],
query
:
'
foo
'
});
testParseQuery
(
'
@tag:foo @modified
'
,
<
IParsedQuery
>
{
tags
:
[
'
foo
'
,
'
modified
'
],
query
:
''
});
testParseQuery
(
'
@tag:foo @modified my query
'
,
<
IParsedQuery
>
{
tags
:
[
'
foo
'
,
'
modified
'
],
query
:
'
my query
'
});
testParseQuery
(
'
test @modified query
'
,
<
IParsedQuery
>
{
tags
:
[
'
modified
'
],
query
:
'
test query
'
});
testParseQuery
(
'
test @modified
'
,
<
IParsedQuery
>
{
tags
:
[
'
modified
'
],
query
:
'
test
'
});
testParseQuery
(
'
query has @ for some reason
'
,
<
IParsedQuery
>
{
tags
:
[],
query
:
'
query has @ for some reason
'
});
});
});
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录