Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
be3e1c36
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
be3e1c36
编写于
9月 25, 2017
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update the schemas model on schema changes
上级
01ad59eb
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
22 deletion
+35
-22
src/vs/platform/jsonschemas/common/jsonContributionRegistry.ts
...s/platform/jsonschemas/common/jsonContributionRegistry.ts
+9
-16
src/vs/workbench/parts/preferences/common/preferencesContentProvider.ts
...ch/parts/preferences/common/preferencesContentProvider.ts
+26
-6
未找到文件。
src/vs/platform/jsonschemas/common/jsonContributionRegistry.ts
浏览文件 @
be3e1c36
...
...
@@ -5,9 +5,8 @@
'
use strict
'
;
import
{
IJSONSchema
}
from
'
vs/base/common/jsonSchema
'
;
import
platform
=
require
(
'
vs/platform/registry/common/platform
'
);
import
{
EventEmitter
}
from
'
vs/base/common/eventEmitter
'
;
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
*
as
platform
from
'
vs/platform/registry/common/platform
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
export
const
Extensions
=
{
JSONContribution
:
'
base.contributions.json
'
...
...
@@ -19,6 +18,8 @@ export interface ISchemaContributions {
export
interface
IJSONContributionRegistry
{
readonly
onDidChangeSchema
:
Event
<
string
>
;
/**
* Register a schema to the registry.
*/
...
...
@@ -28,12 +29,6 @@ export interface IJSONContributionRegistry {
* Get all schemas
*/
getSchemaContributions
():
ISchemaContributions
;
/**
* Adds a change listener
*/
addRegistryChangedListener
(
callback
:
(
e
:
IJSONContributionRegistryEvent
)
=>
void
):
IDisposable
;
}
export
interface
IJSONContributionRegistryEvent
{
...
...
@@ -50,21 +45,19 @@ function normalizeId(id: string) {
class
JSONContributionRegistry
implements
IJSONContributionRegistry
{
private
schemasById
:
{
[
id
:
string
]:
IJSONSchema
};
private
eventEmitter
:
EventEmitter
;
private
_onDidChangeSchema
:
Emitter
<
string
>
=
new
Emitter
<
string
>
();
readonly
onDidChangeSchema
:
Event
<
string
>
=
this
.
_onDidChangeSchema
.
event
;
constructor
()
{
this
.
schemasById
=
{};
this
.
eventEmitter
=
new
EventEmitter
();
}
public
addRegistryChangedListener
(
callback
:
(
e
:
IJSONContributionRegistryEvent
)
=>
void
):
IDisposable
{
return
this
.
eventEmitter
.
addListener
(
'
registryChanged
'
,
callback
);
}
public
registerSchema
(
uri
:
string
,
unresolvedSchemaContent
:
IJSONSchema
):
void
{
this
.
schemasById
[
normalizeId
(
uri
)]
=
unresolvedSchemaContent
;
this
.
eventEmitter
.
emit
(
'
registryChanged
'
,
{}
);
this
.
_onDidChangeSchema
.
fire
(
uri
);
}
public
getSchemaContributions
():
ISchemaContributions
{
...
...
src/vs/workbench/parts/preferences/common/preferencesContentProvider.ts
浏览文件 @
be3e1c36
...
...
@@ -14,6 +14,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
import
{
IWorkbenchContribution
}
from
'
vs/workbench/common/contributions
'
;
import
{
ITextModelService
}
from
'
vs/editor/common/services/resolverService
'
;
import
{
IPreferencesService
}
from
'
vs/workbench/parts/preferences/common/preferences
'
;
import
{
dispose
}
from
'
vs/base/common/lifecycle
'
;
const
schemaRegistry
=
Registry
.
as
<
JSONContributionRegistry
.
IJSONContributionRegistry
>
(
JSONContributionRegistry
.
Extensions
.
JSONContribution
);
...
...
@@ -33,18 +34,16 @@ export class PreferencesContentProvider implements IWorkbenchContribution {
}
private
start
():
void
{
this
.
textModelResolverService
.
registerTextModelContentProvider
(
'
vscode
'
,
{
provideTextContent
:
(
uri
:
URI
):
TPromise
<
IModel
>
=>
{
if
(
uri
.
scheme
!==
'
vscode
'
)
{
return
null
;
}
if
(
uri
.
authority
===
'
schemas
'
)
{
let
schemas
=
schemaRegistry
.
getSchemaContributions
().
schemas
;
let
schema
=
schemas
[
uri
.
toString
()];
if
(
schema
)
{
let
modelContent
=
JSON
.
stringify
(
schema
);
let
mode
=
this
.
modeService
.
getOrCreateMode
(
'
json
'
);
return
TPromise
.
as
(
this
.
modelService
.
createModel
(
modelContent
,
mode
,
uri
));
const
schemaModel
=
this
.
getSchemaModel
(
uri
);
if
(
schemaModel
)
{
return
TPromise
.
as
(
schemaModel
);
}
}
return
this
.
preferencesService
.
resolveContent
(
uri
)
...
...
@@ -59,4 +58,25 @@ export class PreferencesContentProvider implements IWorkbenchContribution {
}
});
}
private
getSchemaModel
(
uri
:
URI
):
IModel
{
let
schema
=
schemaRegistry
.
getSchemaContributions
().
schemas
[
uri
.
toString
()];
if
(
schema
)
{
const
modelContent
=
JSON
.
stringify
(
schema
);
const
mode
=
this
.
modeService
.
getOrCreateMode
(
'
json
'
);
const
model
=
this
.
modelService
.
createModel
(
modelContent
,
mode
,
uri
);
let
disposables
=
[];
disposables
.
push
(
schemaRegistry
.
onDidChangeSchema
(
schemaUri
=>
{
if
(
schemaUri
===
uri
.
toString
())
{
schema
=
schemaRegistry
.
getSchemaContributions
().
schemas
[
uri
.
toString
()];
model
.
setValue
(
JSON
.
stringify
(
schema
));
}
}));
disposables
.
push
(
model
.
onWillDispose
(()
=>
dispose
(
disposables
)));
return
model
;
}
return
null
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录