Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
f8309e4e
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,发现更多精彩内容 >>
提交
f8309e4e
编写于
2月 23, 2017
作者:
M
Martin Aeschlimann
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Theme settings upgrade path - workspace theme setting isn't applied. Fixes #21220
上级
00a0c9eb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
64 addition
and
52 deletion
+64
-52
src/vs/workbench/services/themes/electron-browser/themeService.ts
...orkbench/services/themes/electron-browser/themeService.ts
+64
-52
未找到文件。
src/vs/workbench/services/themes/electron-browser/themeService.ts
浏览文件 @
f8309e4e
...
...
@@ -36,7 +36,7 @@ import pfs = require('vs/base/node/pfs');
// implementation
const
DEFAULT_THEME_ID
=
'
vs-dark vscode-theme-defaults-themes-dark_plus-json
'
;
const
DEFAULT_THEME_
NAM
E
=
'
Default Dark+
'
;
const
DEFAULT_THEME_
SETTING_VALU
E
=
'
Default Dark+
'
;
const
defaultBaseTheme
=
getBaseThemeId
(
DEFAULT_THEME_ID
);
...
...
@@ -301,23 +301,9 @@ export class ThemeService implements IThemeService {
}
});
this
.
initialize
().
then
(
null
,
errors
.
onUnexpectedError
).
then
(
_
=>
{
this
.
configurationService
.
onDidUpdateConfiguration
(
e
=>
{
let
colorThemeSetting
=
this
.
configurationService
.
lookup
<
string
>
(
COLOR_THEME_SETTING
).
value
;
if
(
colorThemeSetting
!==
this
.
currentColorTheme
.
settingsId
)
{
this
.
findThemeDataBySettingsId
(
colorThemeSetting
,
null
).
then
(
theme
=>
{
if
(
theme
)
{
this
.
setColorTheme
(
theme
.
id
,
null
);
}
});
}
let
iconThemeSetting
=
this
.
configurationService
.
lookup
<
string
>
(
ICON_THEME_SETTING
).
value
||
''
;
if
(
iconThemeSetting
!==
this
.
currentIconTheme
.
settingsId
)
{
this
.
findIconThemeBySettingsId
(
iconThemeSetting
).
then
(
theme
=>
{
this
.
setFileIconTheme
(
theme
&&
theme
.
id
,
null
);
});
}
this
.
migrate
().
then
(
_
=>
{
this
.
initialize
().
then
(
null
,
errors
.
onUnexpectedError
).
then
(
_
=>
{
this
.
installConfigurationListener
();
});
});
}
...
...
@@ -330,26 +316,28 @@ export class ThemeService implements IThemeService {
return
this
.
onFileIconThemeChange
.
event
;
}
private
initialize
():
TPromise
<
any
>
{
let
legacyColorThemeId
=
this
.
storageService
.
get
(
'
workbench.theme
'
,
StorageScope
.
GLOBAL
,
null
);
let
legacyIconThemeId
=
this
.
storageService
.
get
(
'
workbench.iconTheme
'
,
StorageScope
.
GLOBAL
,
null
);
if
(
legacyColorThemeId
||
legacyIconThemeId
)
{
private
migrate
():
TPromise
<
any
>
{
let
promises
=
[];
let
legacyColorThemeId
=
this
.
storageService
.
get
(
'
workbench.theme
'
,
StorageScope
.
GLOBAL
,
void
0
);
if
(
!
types
.
isUndefined
(
legacyColorThemeId
))
{
this
.
storageService
.
remove
(
'
workbench.theme
'
,
StorageScope
.
GLOBAL
);
promises
.
push
(
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
);
return
this
.
findThemeData
(
legacyColorThemeId
,
DEFAULT_THEME_ID
).
then
(
theme
=>
{
let
themeId
=
theme
?
theme
.
id
:
DEFAULT_THEME_ID
;
return
this
.
setColorTheme
(
themeId
,
ConfigurationTarget
.
USER
).
then
(
_
=>
{
return
this
.
_findIconThemeData
(
legacyIconThemeId
).
then
(
theme
=>
{
let
themeId
=
theme
&&
theme
.
id
;
return
this
.
setFileIconTheme
(
themeId
,
ConfigurationTarget
.
USER
);
});
});
});
promises
.
push
(
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
TPromise
.
join
(
promises
);
}
private
initialize
():
TPromise
<
any
>
{
let
colorThemeSetting
=
this
.
configurationService
.
lookup
<
string
>
(
COLOR_THEME_SETTING
).
value
;
let
iconThemeSetting
=
this
.
configurationService
.
lookup
<
string
>
(
ICON_THEME_SETTING
).
value
||
''
;
...
...
@@ -363,6 +351,26 @@ export class ThemeService implements IThemeService {
]);
}
private
installConfigurationListener
()
{
this
.
configurationService
.
onDidUpdateConfiguration
(
e
=>
{
let
colorThemeSetting
=
this
.
configurationService
.
lookup
<
string
>
(
COLOR_THEME_SETTING
).
value
;
if
(
colorThemeSetting
!==
this
.
currentColorTheme
.
settingsId
)
{
this
.
findThemeDataBySettingsId
(
colorThemeSetting
,
null
).
then
(
theme
=>
{
if
(
theme
)
{
this
.
setColorTheme
(
theme
.
id
,
null
);
}
});
}
let
iconThemeSetting
=
this
.
configurationService
.
lookup
<
string
>
(
ICON_THEME_SETTING
).
value
||
''
;
if
(
iconThemeSetting
!==
this
.
currentIconTheme
.
settingsId
)
{
this
.
findIconThemeBySettingsId
(
iconThemeSetting
).
then
(
theme
=>
{
this
.
setFileIconTheme
(
theme
&&
theme
.
id
,
null
);
});
}
});
}
public
setColorTheme
(
themeId
:
string
,
settingsTarget
:
ConfigurationTarget
):
TPromise
<
IColorTheme
>
{
if
(
!
themeId
)
{
return
TPromise
.
as
(
null
);
...
...
@@ -402,15 +410,9 @@ export class ThemeService implements IThemeService {
});
}
private
writeColorThemeConfiguration
(
settingsTarget
:
ConfigurationTarget
)
{
let
value
=
this
.
currentColorTheme
.
settingsId
;
if
(
!
types
.
isUndefinedOrNull
(
settingsTarget
)
&&
this
.
configurationService
.
lookup
(
COLOR_THEME_SETTING
).
value
!==
value
)
{
if
(
settingsTarget
===
ConfigurationTarget
.
USER
&&
this
.
currentColorTheme
.
id
===
DEFAULT_THEME_ID
)
{
value
=
void
0
;
// remove key from user settings
}
return
this
.
configurationEditingService
.
writeConfiguration
(
settingsTarget
,
{
key
:
COLOR_THEME_SETTING
,
value
}).
then
(
_
=>
{
return
this
.
currentColorTheme
;
});
private
writeColorThemeConfiguration
(
settingsTarget
:
ConfigurationTarget
):
TPromise
<
IFileIconTheme
>
{
if
(
!
types
.
isUndefinedOrNull
(
settingsTarget
))
{
return
this
.
writeConfiguration
(
COLOR_THEME_SETTING
,
this
.
currentColorTheme
.
settingsId
,
settingsTarget
).
then
(
_
=>
this
.
currentColorTheme
);
}
return
TPromise
.
as
(
this
.
currentColorTheme
);
}
...
...
@@ -606,18 +608,28 @@ export class ThemeService implements IThemeService {
}
private
writeFileIconConfiguration
(
settingsTarget
:
ConfigurationTarget
):
TPromise
<
IFileIconTheme
>
{
let
value
=
this
.
currentIconTheme
.
settingsId
;
if
(
!
types
.
isUndefinedOrNull
(
settingsTarget
)
&&
this
.
configurationService
.
lookup
(
ICON_THEME_SETTING
).
value
!==
value
)
{
if
(
settingsTarget
===
ConfigurationTarget
.
USER
&&
this
.
currentIconTheme
.
id
===
''
)
{
value
=
void
0
;
// remove key from user settings
}
return
this
.
configurationEditingService
.
writeConfiguration
(
settingsTarget
,
{
key
:
ICON_THEME_SETTING
,
value
}).
then
(
_
=>
{
return
this
.
currentIconTheme
;
});
if
(
!
types
.
isUndefinedOrNull
(
settingsTarget
))
{
return
this
.
writeConfiguration
(
ICON_THEME_SETTING
,
this
.
currentIconTheme
.
settingsId
,
settingsTarget
).
then
(
_
=>
this
.
currentIconTheme
);
}
return
TPromise
.
as
(
this
.
currentIconTheme
);
}
private
writeConfiguration
(
key
:
string
,
value
:
any
,
settingsTarget
:
ConfigurationTarget
):
TPromise
<
any
>
{
let
settings
=
this
.
configurationService
.
lookup
(
key
);
if
(
settingsTarget
===
ConfigurationTarget
.
USER
)
{
if
(
value
===
settings
.
user
)
{
return
TPromise
.
as
(
null
);
// nothing to do
}
else
if
(
value
===
settings
.
default
)
{
value
=
void
0
;
// remove configuration from user settings
}
}
else
if
(
settingsTarget
===
ConfigurationTarget
.
WORKSPACE
)
{
if
(
value
===
settings
.
value
)
{
return
TPromise
.
as
(
null
);
// nothing to do
}
}
return
this
.
configurationEditingService
.
writeConfiguration
(
settingsTarget
,
{
key
,
value
});
}
private
_findIconThemeData
(
iconTheme
:
string
):
TPromise
<
IInternalIconThemeData
>
{
return
this
.
getFileIconThemes
().
then
(
allIconSets
=>
{
for
(
let
iconSet
of
allIconSets
)
{
...
...
@@ -1125,7 +1137,7 @@ const configurationRegistry = Registry.as<IConfigurationRegistry>(ConfigurationE
const
colorThemeSetting
:
IJSONSchema
=
{
type
:
'
string
'
,
description
:
nls
.
localize
(
'
colorTheme
'
,
"
Specifies the color theme used in the workbench.
"
),
default
:
DEFAULT_THEME_
NAM
E
,
default
:
DEFAULT_THEME_
SETTING_VALU
E
,
enum
:
[],
enumDescriptions
:
[],
errorMessage
:
nls
.
localize
(
'
colorThemeError
'
,
"
Theme is unknown or not installed.
"
),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录