Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
64920b3f
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,发现更多精彩内容 >>
提交
64920b3f
编写于
6月 27, 2019
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #76211
上级
e8016097
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
40 addition
and
29 deletion
+40
-29
src/vs/platform/extensionManagement/node/extensionManagementService.ts
...rm/extensionManagement/node/extensionManagementService.ts
+12
-3
src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts
.../contrib/extensions/electron-browser/extensionsActions.ts
+9
-8
src/vs/workbench/contrib/extensions/electron-browser/extensionsList.ts
...nch/contrib/extensions/electron-browser/extensionsList.ts
+1
-1
src/vs/workbench/contrib/extensions/electron-browser/extensionsViews.ts
...ch/contrib/extensions/electron-browser/extensionsViews.ts
+2
-2
src/vs/workbench/services/extensions/electron-browser/extensionService.ts
.../services/extensions/electron-browser/extensionService.ts
+16
-15
未找到文件。
src/vs/platform/extensionManagement/node/extensionManagementService.ts
浏览文件 @
64920b3f
...
...
@@ -453,7 +453,7 @@ export class ExtensionManagementService extends Disposable implements IExtension
}
this
.
logService
.
info
(
'
Installation completed.
'
,
identifier
.
id
);
if
(
metadata
)
{
local
.
metadata
=
metadata
;
this
.
setMetadata
(
local
,
metadata
)
;
return
this
.
saveMetadataForLocalExtension
(
local
);
}
return
local
;
...
...
@@ -783,12 +783,21 @@ export class ExtensionManagementService extends Disposable implements IExtension
const
readmeUrl
=
readme
?
URI
.
file
(
path
.
join
(
extensionPath
,
readme
))
:
null
;
const
changelog
=
children
.
filter
(
child
=>
/^changelog
(\.
txt|
\.
md|
)
$/i
.
test
(
child
))[
0
];
const
changelogUrl
=
changelog
?
URI
.
file
(
path
.
join
(
extensionPath
,
changelog
))
:
null
;
const
identifier
=
{
id
:
getGalleryExtensionId
(
manifest
.
publisher
,
manifest
.
name
),
uuid
:
metadata
?
metadata
.
id
:
null
};
return
<
ILocalExtension
>
{
type
,
identifier
,
manifest
,
metadata
,
location
:
URI
.
file
(
extensionPath
),
readmeUrl
,
changelogUrl
};
const
identifier
=
{
id
:
getGalleryExtensionId
(
manifest
.
publisher
,
manifest
.
name
)
};
const
local
=
<
ILocalExtension
>
{
type
,
identifier
,
manifest
,
metadata
,
location
:
URI
.
file
(
extensionPath
),
readmeUrl
,
changelogUrl
};
if
(
metadata
)
{
this
.
setMetadata
(
local
,
metadata
);
}
return
local
;
}))
.
then
(
undefined
,
()
=>
null
);
}
private
setMetadata
(
local
:
ILocalExtension
,
metadata
:
IGalleryMetadata
):
void
{
local
.
metadata
=
metadata
;
local
.
identifier
.
uuid
=
metadata
.
id
;
}
async
removeDeprecatedExtensions
():
Promise
<
void
>
{
await
this
.
removeUninstalledExtensions
();
await
this
.
removeOutdatedExtensions
();
...
...
src/vs/workbench/contrib/extensions/electron-browser/extensionsActions.ts
浏览文件 @
64920b3f
...
...
@@ -68,7 +68,8 @@ function toExtensionDescription(local: ILocalExtension): IExtensionDescription {
isBuiltin
:
local
.
type
===
ExtensionType
.
System
,
isUnderDevelopment
:
false
,
extensionLocation
:
local
.
location
,
...
local
.
manifest
...
local
.
manifest
,
uuid
:
local
.
identifier
.
uuid
};
}
...
...
@@ -948,7 +949,7 @@ export class DisableForWorkspaceAction extends ExtensionAction {
update
():
void
{
this
.
enabled
=
false
;
if
(
this
.
extension
&&
this
.
runningExtensions
.
some
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
)
&&
this
.
workspaceContextService
.
getWorkbenchState
()
!==
WorkbenchState
.
EMPTY
))
{
if
(
this
.
extension
&&
this
.
runningExtensions
.
some
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
)
&&
this
.
workspaceContextService
.
getWorkbenchState
()
!==
WorkbenchState
.
EMPTY
))
{
this
.
enabled
=
this
.
extension
.
state
===
ExtensionState
.
Installed
&&
(
this
.
extension
.
enablementState
===
EnablementState
.
Enabled
||
this
.
extension
.
enablementState
===
EnablementState
.
WorkspaceEnabled
)
&&
!!
this
.
extension
.
local
&&
this
.
extensionEnablementService
.
canChangeEnablement
(
this
.
extension
.
local
);
}
}
...
...
@@ -973,7 +974,7 @@ export class DisableGloballyAction extends ExtensionAction {
update
():
void
{
this
.
enabled
=
false
;
if
(
this
.
extension
&&
this
.
runningExtensions
.
some
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
)))
{
if
(
this
.
extension
&&
this
.
runningExtensions
.
some
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
)))
{
this
.
enabled
=
this
.
extension
.
state
===
ExtensionState
.
Installed
&&
(
this
.
extension
.
enablementState
===
EnablementState
.
Enabled
||
this
.
extension
.
enablementState
===
EnablementState
.
WorkspaceEnabled
)
&&
!!
this
.
extension
.
local
&&
this
.
extensionEnablementService
.
canChangeEnablement
(
this
.
extension
.
local
);
}
}
...
...
@@ -1241,7 +1242,7 @@ export class ReloadAction extends ExtensionAction {
return
;
}
const
isUninstalled
=
this
.
extension
.
state
===
ExtensionState
.
Uninstalled
;
const
runningExtension
=
this
.
_runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
))[
0
];
const
runningExtension
=
this
.
_runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
))[
0
];
const
isSameExtensionRunning
=
runningExtension
&&
this
.
extension
.
server
===
this
.
extensionManagementServerService
.
getExtensionManagementServer
(
runningExtension
.
extensionLocation
);
if
(
isUninstalled
)
{
...
...
@@ -2492,7 +2493,7 @@ export class StatusLabelAction extends Action implements IExtensionContainer {
const
runningExtensions
=
await
this
.
extensionService
.
getExtensions
();
const
canAddExtension
=
()
=>
{
const
runningExtension
=
runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
))[
0
];
const
runningExtension
=
runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
))[
0
];
if
(
this
.
extension
.
local
)
{
if
(
runningExtension
&&
this
.
extension
.
version
===
runningExtension
.
version
)
{
return
true
;
...
...
@@ -2503,7 +2504,7 @@ export class StatusLabelAction extends Action implements IExtensionContainer {
};
const
canRemoveExtension
=
()
=>
{
if
(
this
.
extension
.
local
)
{
if
(
runningExtensions
.
every
(
e
=>
!
(
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
)
&&
this
.
extension
.
server
===
this
.
extensionManagementServerService
.
getExtensionManagementServer
(
e
.
extensionLocation
))))
{
if
(
runningExtensions
.
every
(
e
=>
!
(
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
)
&&
this
.
extension
.
server
===
this
.
extensionManagementServerService
.
getExtensionManagementServer
(
e
.
extensionLocation
))))
{
return
true
;
}
return
this
.
extensionService
.
canRemoveExtension
(
toExtensionDescription
(
this
.
extension
.
local
));
...
...
@@ -2601,7 +2602,7 @@ export class DisabledLabelAction extends ExtensionAction {
}
if
(
this
.
extension
&&
this
.
extension
.
local
&&
this
.
_runningExtensions
)
{
const
isEnabled
=
this
.
extensionEnablementService
.
isEnabled
(
this
.
extension
.
local
);
const
isExtensionRunning
=
this
.
_runningExtensions
.
some
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
));
const
isExtensionRunning
=
this
.
_runningExtensions
.
some
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
));
if
(
!
isExtensionRunning
&&
!
isEnabled
&&
this
.
extensionEnablementService
.
canChangeEnablement
(
this
.
extension
.
local
))
{
this
.
class
=
DisabledLabelAction
.
Class
;
this
.
label
=
localize
(
'
disabled by user
'
,
"
This extension is disabled by the user.
"
);
...
...
@@ -2667,7 +2668,7 @@ export class SystemDisabledWarningAction extends ExtensionAction {
}
return
;
}
const
runningExtension
=
this
.
_runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
this
.
extension
.
identifier
))[
0
];
const
runningExtension
=
this
.
_runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
this
.
extension
.
identifier
))[
0
];
const
runningExtensionServer
=
runningExtension
?
this
.
extensionManagementServerService
.
getExtensionManagementServer
(
runningExtension
.
extensionLocation
)
:
null
;
const
localExtension
=
this
.
extensionsWorkbenchService
.
local
.
filter
(
e
=>
areSameExtensions
(
e
.
identifier
,
this
.
extension
.
identifier
))[
0
];
const
localExtensionServer
=
localExtension
?
localExtension
.
server
:
null
;
...
...
src/vs/workbench/contrib/extensions/electron-browser/extensionsList.ts
浏览文件 @
64920b3f
...
...
@@ -154,7 +154,7 @@ export class Renderer implements IPagedRenderer<IExtension, ITemplateData> {
const
updateEnablement
=
async
()
=>
{
const
runningExtensions
=
await
this
.
extensionService
.
getExtensions
();
if
(
extension
.
local
&&
!
isLanguagePackExtension
(
extension
.
local
.
manifest
))
{
const
runningExtension
=
runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
},
extension
.
identifier
))[
0
];
const
runningExtension
=
runningExtensions
.
filter
(
e
=>
areSameExtensions
({
id
:
e
.
identifier
.
value
,
uuid
:
e
.
uuid
},
extension
.
identifier
))[
0
];
const
isSameExtensionRunning
=
runningExtension
&&
extension
.
server
===
this
.
extensionManagementServerService
.
getExtensionManagementServer
(
runningExtension
.
extensionLocation
);
toggleClass
(
data
.
root
,
'
disabled
'
,
!
isSameExtensionRunning
);
}
else
{
...
...
src/vs/workbench/contrib/extensions/electron-browser/extensionsViews.ts
浏览文件 @
64920b3f
...
...
@@ -392,7 +392,7 @@ export class ExtensionsListView extends ViewletPanel {
const
result
=
local
.
sort
((
e1
,
e2
)
=>
e1
.
displayName
.
localeCompare
(
e2
.
displayName
))
.
filter
(
e
=>
runningExtensions
.
every
(
r
=>
!
areSameExtensions
({
id
:
r
.
identifier
.
value
},
e
.
identifier
))
.
filter
(
e
=>
runningExtensions
.
every
(
r
=>
!
areSameExtensions
({
id
:
r
.
identifier
.
value
,
uuid
:
r
.
uuid
},
e
.
identifier
))
&&
(
e
.
name
.
toLowerCase
().
indexOf
(
value
)
>
-
1
||
e
.
displayName
.
toLowerCase
().
indexOf
(
value
)
>
-
1
)
&&
(
!
categories
.
length
||
categories
.
some
(
category
=>
(
e
.
local
&&
e
.
local
.
manifest
.
categories
||
[]).
some
(
c
=>
c
.
toLowerCase
()
===
category
))));
...
...
@@ -407,7 +407,7 @@ export class ExtensionsListView extends ViewletPanel {
const
result
=
local
.
sort
((
e1
,
e2
)
=>
e1
.
displayName
.
localeCompare
(
e2
.
displayName
))
.
filter
(
e
=>
runningExtensions
.
some
(
r
=>
areSameExtensions
({
id
:
r
.
identifier
.
value
},
e
.
identifier
))
.
filter
(
e
=>
runningExtensions
.
some
(
r
=>
areSameExtensions
({
id
:
r
.
identifier
.
value
,
uuid
:
r
.
uuid
},
e
.
identifier
))
&&
(
e
.
name
.
toLowerCase
().
indexOf
(
value
)
>
-
1
||
e
.
displayName
.
toLowerCase
().
indexOf
(
value
)
>
-
1
)
&&
(
!
categories
.
length
||
categories
.
some
(
category
=>
(
e
.
local
&&
e
.
local
.
manifest
.
categories
||
[]).
some
(
c
=>
c
.
toLowerCase
()
===
category
))));
...
...
src/vs/workbench/services/extensions/electron-browser/extensionService.ts
浏览文件 @
64920b3f
...
...
@@ -26,7 +26,7 @@ import { ILifecycleService, LifecyclePhase } from 'vs/platform/lifecycle/common/
import
{
INotificationService
,
Severity
}
from
'
vs/platform/notification/common/notification
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IWindowService
,
IWindowsService
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
IExtensionService
,
toExtension
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
import
{
ExtensionHostProcessManager
}
from
'
vs/workbench/services/extensions/common/extensionHostProcessManager
'
;
import
{
ExtensionIdentifier
,
IExtension
,
ExtensionType
,
IExtensionDescription
}
from
'
vs/platform/extensions/common/extensions
'
;
import
{
Schemas
}
from
'
vs/base/common/network
'
;
...
...
@@ -166,13 +166,7 @@ export class ExtensionService extends AbstractExtensionService implements IExten
for
(
let
i
=
0
,
len
=
_toAdd
.
length
;
i
<
len
;
i
++
)
{
const
extension
=
_toAdd
[
i
];
if
(
extension
.
location
.
scheme
!==
Schemas
.
file
)
{
continue
;
}
const
existingExtensionDescription
=
this
.
_registry
.
getExtensionDescription
(
extension
.
identifier
.
id
);
if
(
existingExtensionDescription
)
{
// this extension is already running (most likely at a different version)
if
(
!
this
.
_canAddExtension
(
extension
))
{
continue
;
}
...
...
@@ -235,21 +229,28 @@ export class ExtensionService extends AbstractExtensionService implements IExten
this
.
_doHandleExtensionPoints
(
extensionDescriptions
);
}
public
canAddExtension
(
extension
:
IExtensionDescription
):
boolean
{
public
canAddExtension
(
extensionDescription
:
IExtensionDescription
):
boolean
{
return
this
.
_canAddExtension
(
toExtension
(
extensionDescription
));
}
public
_canAddExtension
(
extension
:
IExtension
):
boolean
{
if
(
this
.
_environmentService
.
configuration
.
remoteAuthority
)
{
return
false
;
}
if
(
extension
.
extensionL
ocation
.
scheme
!==
Schemas
.
file
)
{
if
(
extension
.
l
ocation
.
scheme
!==
Schemas
.
file
)
{
return
false
;
}
const
extensionDescription
=
this
.
_registry
.
getExtensionDescription
(
extension
.
identifier
);
const
extensionDescription
=
this
.
_registry
.
getExtensionDescription
(
extension
.
identifier
.
id
);
if
(
extensionDescription
)
{
// ignore adding an extension which is already running and cannot be removed
if
(
!
this
.
_canRemoveExtension
(
extensionDescription
))
{
return
false
;
}
// this extension is already running (most likely at a different version)
return
false
;
}
// Check if extension is renamed
if
(
extension
.
identifier
.
uuid
&&
this
.
_registry
.
getAllExtensionDescriptions
().
some
(
e
=>
e
.
uuid
===
extension
.
identifier
.
uuid
))
{
return
false
;
}
return
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录