Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
4f4ebc6b
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,发现更多精彩内容 >>
提交
4f4ebc6b
编写于
5月 04, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NodeConfigurationService
上级
3726898b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
109 addition
and
0 deletion
+109
-0
src/vs/platform/configuration/node/nodeConfigurationService.ts
...s/platform/configuration/node/nodeConfigurationService.ts
+109
-0
未找到文件。
src/vs/platform/configuration/node/nodeConfigurationService.ts
0 → 100644
浏览文件 @
4f4ebc6b
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'
use strict
'
;
import
{
watch
,
FSWatcher
,
readFileSync
}
from
'
fs
'
;
import
*
as
path
from
'
path
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Delayer
}
from
'
vs/base/common/async
'
;
import
*
as
json
from
'
vs/base/common/json
'
;
import
{
IDisposable
,
dispose
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IConfigurationService
,
IConfigurationServiceEvent
}
from
'
vs/platform/configuration/common/configuration
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
/**
* Configuration service to be used in the node side.
* TODO@Joao:
* - defaults handling
* - async reading
*
* At some point, an async get() on the configuration service would be
* much easier to implement and reason about. IConfigurationService2?
*/
export
class
NodeConfigurationService
implements
IConfigurationService
,
IDisposable
{
serviceId
=
IConfigurationService
;
private
configurationPath
:
string
;
private
watcher
:
FSWatcher
;
private
cache
:
any
;
private
delayer
:
Delayer
<
void
>
;
private
disposables
:
IDisposable
[];
private
_onDidUpdateConfiguration
=
new
Emitter
<
IConfigurationServiceEvent
>
();
get
onDidUpdateConfiguration
():
Event
<
IConfigurationServiceEvent
>
{
return
this
.
_onDidUpdateConfiguration
.
event
;
}
constructor
(
@
IEnvironmentService
environmentService
:
IEnvironmentService
)
{
this
.
cache
=
{};
this
.
disposables
=
[];
this
.
delayer
=
new
Delayer
<
void
>
(
300
);
// TODO@joao cleanup!
this
.
configurationPath
=
path
.
join
(
environmentService
.
userDataPath
,
'
User
'
,
'
settings.json
'
);
// TODO@joao sync?
this
.
load
();
this
.
watcher
=
watch
(
path
.
dirname
(
this
.
configurationPath
));
this
.
disposables
.
push
(
toDisposable
(()
=>
{
this
.
watcher
.
removeAllListeners
();
this
.
watcher
.
close
();
}));
this
.
watcher
.
on
(
'
change
'
,
()
=>
this
.
delayer
.
trigger
(()
=>
this
.
load
()));
}
getConfiguration
<
T
>
(
section
?:
string
):
T
{
return
this
.
_getConfiguration
<
T
>
(
section
);
}
loadConfiguration
<
T
>
(
section
?:
string
):
TPromise
<
T
>
{
return
TPromise
.
wrapError
(
new
Error
(
'
not implemented
'
));
}
private
_getConfiguration
<
T
>
(
section
:
string
=
''
):
T
{
let
value
=
this
.
cache
;
let
parts
=
section
.
split
(
'
.
'
)
.
filter
(
p
=>
!!
p
);
while
(
parts
.
length
&&
value
)
{
let
part
=
parts
.
shift
();
value
=
value
[
part
];
}
return
value
;
}
private
load
():
void
{
let
content
=
'
{}
'
;
try
{
// TODO@Joao: is sync really the way to go?
content
=
readFileSync
(
this
.
configurationPath
,
'
utf8
'
);
}
catch
(
error
)
{
content
=
'
{}
'
;
}
try
{
this
.
cache
=
json
.
parse
(
content
)
||
{};
}
catch
(
error
)
{
// noop
}
}
hasWorkspaceConfiguration
():
boolean
{
return
false
;
}
dispose
():
void
{
this
.
disposables
=
dispose
(
this
.
disposables
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录