Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
777cc89e
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,发现更多精彩内容 >>
提交
777cc89e
编写于
3月 07, 2017
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
User settings reset/lost on upgrade. fixes #21676
上级
6f8a2247
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
50 addition
and
16 deletion
+50
-16
src/vs/workbench/services/themes/electron-browser/themeService.ts
...orkbench/services/themes/electron-browser/themeService.ts
+50
-16
未找到文件。
src/vs/workbench/services/themes/electron-browser/themeService.ts
浏览文件 @
777cc89e
...
...
@@ -25,7 +25,11 @@ import errors = require('vs/base/common/errors');
import
{
IConfigurationEditingService
,
ConfigurationTarget
}
from
'
vs/workbench/services/configuration/common/configurationEditing
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IConfigurationRegistry
,
Extensions
as
ConfigurationExtensions
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IFileService
}
from
'
vs/platform/files/common/files
'
;
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
IMessageService
}
from
'
vs/platform/message/common/message
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
$
}
from
'
vs/base/browser/builder
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
...
...
@@ -240,6 +244,9 @@ export class ThemeService implements IThemeService {
@
IWindowIPCService
private
windowService
:
IWindowIPCService
,
@
IConfigurationService
private
configurationService
:
IConfigurationService
,
@
IConfigurationEditingService
private
configurationEditingService
:
IConfigurationEditingService
,
@
IEnvironmentService
private
environmentService
:
IEnvironmentService
,
@
IFileService
private
fileService
:
IFileService
,
@
IMessageService
private
messageService
:
IMessageService
,
@
ITelemetryService
private
telemetryService
:
ITelemetryService
)
{
this
.
container
=
container
;
...
...
@@ -316,25 +323,49 @@ export class ThemeService implements IThemeService {
return
this
.
onFileIconThemeChange
.
event
;
}
private
backupSettings
():
TPromise
<
string
>
{
let
resource
=
URI
.
file
(
this
.
environmentService
.
appSettingsPath
);
let
backupFileLocation
=
URI
.
file
(
resource
.
fsPath
+
'
-
'
+
new
Date
().
getTime
()
+
'
.backup
'
);
return
this
.
fileService
.
copyFile
(
resource
,
backupFileLocation
,
true
).
then
(
_
=>
backupFileLocation
.
fsPath
,
err
=>
{
if
(
err
&&
err
.
code
===
'
ENOENT
'
)
{
return
TPromise
.
as
(
null
);
// ignore, user config file doesn't exist yet
}
return
TPromise
.
wrapError
(
err
);
});
}
private
migrate
():
TPromise
<
any
>
{
let
promises
=
[];
let
legacyColorThemeId
=
this
.
storageService
.
get
(
'
workbench.theme
'
,
StorageScope
.
GLOBAL
,
void
0
);
let
legacyIconThemeId
=
this
.
storageService
.
get
(
'
workbench.iconTheme
'
,
StorageScope
.
GLOBAL
,
void
0
);
if
(
types
.
isUndefined
(
legacyColorThemeId
)
&&
types
.
isUndefined
(
legacyIconThemeId
))
{
return
TPromise
.
as
(
null
);
}
return
this
.
backupSettings
().
then
(
backupLocation
=>
{
let
promise
=
TPromise
.
as
(
null
);
if
(
!
types
.
isUndefined
(
legacyColorThemeId
))
{
this
.
storageService
.
remove
(
'
workbench.theme
'
,
StorageScope
.
GLOBAL
);
promises
.
push
(
this
.
findThemeData
(
legacyColorThemeId
,
DEFAULT_THEME_ID
).
then
(
theme
=>
{
promise
=
this
.
findThemeData
(
legacyColorThemeId
,
DEFAULT_THEME_ID
).
then
(
theme
=>
{
let
value
=
theme
?
theme
.
settingsId
:
DEFAULT_THEME_SETTING_VALUE
;
return
this
.
writeConfiguration
(
COLOR_THEME_SETTING
,
value
,
ConfigurationTarget
.
USER
).
then
(
null
,
error
=>
null
);
})
);
}
);
}
let
legacyIconThemeId
=
this
.
storageService
.
get
(
'
workbench.iconTheme
'
,
StorageScope
.
GLOBAL
,
void
0
);
if
(
!
types
.
isUndefined
(
legacyIconThemeId
))
{
this
.
storageService
.
remove
(
'
workbench.iconTheme
'
,
StorageScope
.
GLOBAL
);
promises
.
push
(
this
.
_findIconThemeData
(
legacyIconThemeId
).
then
(
theme
=>
{
promise
=
promise
.
then
(
_
=>
{
return
this
.
_findIconThemeData
(
legacyIconThemeId
).
then
(
theme
=>
{
let
value
=
theme
?
theme
.
settingsId
:
null
;
return
this
.
writeConfiguration
(
ICON_THEME_SETTING
,
value
,
ConfigurationTarget
.
USER
).
then
(
null
,
error
=>
null
);
}));
});
});
}
return
promise
.
then
(
_
=>
{
if
(
backupLocation
)
{
let
message
=
nls
.
localize
(
'
migration.completed
'
,
'
New theme settings have been added to the user settings. Backup available at {0}.
'
,
backupLocation
);
this
.
messageService
.
show
(
Severity
.
Info
,
message
);
console
.
log
(
message
);
}
return
TPromise
.
join
(
promises
);
});
});
}
private
initialize
():
TPromise
<
any
>
{
...
...
@@ -620,6 +651,9 @@ export class ThemeService implements IThemeService {
if
(
value
===
settings
.
user
)
{
return
TPromise
.
as
(
null
);
// nothing to do
}
else
if
(
value
===
settings
.
default
)
{
if
(
types
.
isUndefined
(
settings
.
user
))
{
return
TPromise
.
as
(
null
);
// nothing to do
}
value
=
void
0
;
// remove configuration from user settings
}
}
else
if
(
settingsTarget
===
ConfigurationTarget
.
WORKSPACE
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录