Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
23e4cf3a
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,发现更多精彩内容 >>
提交
23e4cf3a
编写于
11月 29, 2018
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #63992
上级
4ff9d7bf
变更
7
展开全部
显示空白变更内容
内联
并排
Showing
7 changed file
with
391 addition
and
548 deletion
+391
-548
src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts
...ench/parts/extensions/electron-browser/extensionEditor.ts
+162
-162
src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts
...ch/parts/extensions/electron-browser/extensionsActions.ts
+158
-270
src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts
...ench/parts/extensions/electron-browser/extensionsViews.ts
+17
-8
src/vs/workbench/parts/extensions/electron-browser/media/extensionActions.css
...ts/extensions/electron-browser/media/extensionActions.css
+2
-4
src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts
...ts/extensions/electron-browser/runtimeExtensionsEditor.ts
+4
-6
src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts
...bench/parts/extensions/node/extensionsWorkbenchService.ts
+1
-1
src/vs/workbench/parts/extensions/test/electron-browser/extensionsActions.test.ts
...xtensions/test/electron-browser/extensionsActions.test.ts
+47
-97
未找到文件。
src/vs/workbench/parts/extensions/electron-browser/extensionEditor.ts
浏览文件 @
23e4cf3a
...
...
@@ -27,7 +27,7 @@ import { IExtensionsWorkbenchService, IExtensionsViewlet, VIEWLET_ID, IExtension
import
{
RatingsWidget
,
InstallCountWidget
}
from
'
vs/workbench/parts/extensions/browser/extensionsWidgets
'
;
import
{
EditorOptions
}
from
'
vs/workbench/common/editor
'
;
import
{
ActionBar
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
CombinedInstallAction
,
UpdateAction
,
E
nableAction
,
DisableAction
,
ReloadAction
,
MaliciousStatusLabelAction
,
DisabledStatusLabelAction
,
IgnoreExtensionRecommendationAction
,
UndoIgnoreExtensionRecommendatio
nAction
}
from
'
vs/workbench/parts/extensions/electron-browser/extensionsActions
'
;
import
{
CombinedInstallAction
,
UpdateAction
,
E
xtensionEditorDropDownAction
,
ReloadAction
,
MaliciousStatusLabelAction
,
DisabledStatusLabelAction
,
IgnoreExtensionRecommendationAction
,
UndoIgnoreExtensionRecommendationAction
,
EnableDropDownAction
,
DisableDropDow
nAction
}
from
'
vs/workbench/parts/extensions/electron-browser/extensionsActions
'
;
import
{
WebviewElement
}
from
'
vs/workbench/parts/webview/electron-browser/webviewElement
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
DomScrollableElement
}
from
'
vs/base/browser/ui/scrollbar/scrollableElement
'
;
...
...
@@ -48,6 +48,7 @@ import { ExtensionsTree, IExtensionData } from 'vs/workbench/parts/extensions/br
import
{
ShowCurrentReleaseNotesAction
}
from
'
vs/workbench/parts/update/electron-browser/update
'
;
import
{
KeybindingParser
}
from
'
vs/base/common/keybindingParser
'
;
import
{
IStorageService
}
from
'
vs/platform/storage/common/storage
'
;
import
{
IExtensionService
}
from
'
vs/workbench/services/extensions/common/extensions
'
;
function
renderBody
(
body
:
string
):
string
{
const
styleSheetPath
=
require
.
toUrl
(
'
./media/markdown.css
'
).
replace
(
'
file://
'
,
'
vscode-core-resource://
'
);
...
...
@@ -188,7 +189,8 @@ export class ExtensionEditor extends BaseEditor {
@
IOpenerService
private
readonly
openerService
:
IOpenerService
,
@
IPartService
private
readonly
partService
:
IPartService
,
@
IExtensionTipsService
private
readonly
extensionTipsService
:
IExtensionTipsService
,
@
IStorageService
storageService
:
IStorageService
@
IStorageService
storageService
:
IStorageService
,
@
IExtensionService
private
extensionService
:
IExtensionService
)
{
super
(
ExtensionEditor
.
ID
,
telemetryService
,
themeService
,
storageService
);
this
.
disposables
=
[];
...
...
@@ -236,11 +238,8 @@ export class ExtensionEditor extends BaseEditor {
this
.
extensionActionBar
=
new
ActionBar
(
extensionActions
,
{
animated
:
false
,
actionItemProvider
:
(
action
:
Action
)
=>
{
if
(
action
.
id
===
EnableAction
.
ID
)
{
return
(
<
EnableAction
>
action
).
createActionItem
();
}
if
(
action
.
id
===
DisableAction
.
ID
)
{
return
(
<
DisableAction
>
action
).
createActionItem
();
if
(
action
instanceof
ExtensionEditorDropDownAction
)
{
return
action
.
createActionItem
();
}
return
null
;
}
...
...
@@ -270,6 +269,8 @@ export class ExtensionEditor extends BaseEditor {
}
setInput
(
input
:
ExtensionsInput
,
options
:
EditorOptions
,
token
:
CancellationToken
):
Thenable
<
void
>
{
return
this
.
extensionService
.
getExtensions
()
.
then
(
runningExtensions
=>
{
this
.
activeElement
=
null
;
this
.
editorLoadComplete
=
false
;
const
extension
=
input
.
extension
;
...
...
@@ -366,16 +367,14 @@ export class ExtensionEditor extends BaseEditor {
const
disabledStatusAction
=
this
.
instantiationService
.
createInstance
(
DisabledStatusLabelAction
);
const
installAction
=
this
.
instantiationService
.
createInstance
(
CombinedInstallAction
);
const
updateAction
=
this
.
instantiationService
.
createInstance
(
UpdateAction
);
const
enableAction
=
this
.
instantiationService
.
createInstance
(
EnableAction
);
const
disableAction
=
this
.
instantiationService
.
createInstance
(
DisableAction
);
const
enableAction
=
this
.
instantiationService
.
createInstance
(
EnableDropDownAction
,
extension
,
runningExtensions
);
const
disableAction
=
this
.
instantiationService
.
createInstance
(
DisableDropDownAction
,
extension
,
runningExtensions
);
const
reloadAction
=
this
.
instantiationService
.
createInstance
(
ReloadAction
,
true
);
installAction
.
extension
=
extension
;
maliciousStatusAction
.
extension
=
extension
;
disabledStatusAction
.
extension
=
extension
;
updateAction
.
extension
=
extension
;
enableAction
.
extension
=
extension
;
disableAction
.
extension
=
extension
;
reloadAction
.
extension
=
extension
;
this
.
extensionActionBar
.
clear
();
...
...
@@ -435,6 +434,7 @@ export class ExtensionEditor extends BaseEditor {
});
return
super
.
setInput
(
input
,
options
,
token
);
});
}
focus
():
void
{
...
...
src/vs/workbench/parts/extensions/electron-browser/extensionsActions.ts
浏览文件 @
23e4cf3a
此差异已折叠。
点击以展开。
src/vs/workbench/parts/extensions/electron-browser/extensionsViews.ts
浏览文件 @
23e4cf3a
...
...
@@ -27,7 +27,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic
import
{
IModeService
}
from
'
vs/editor/common/services/modeService
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
CountBadge
}
from
'
vs/base/browser/ui/countBadge/countBadge
'
;
import
{
ActionBar
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
ActionBar
,
Separator
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
InstallWorkspaceRecommendedExtensionsAction
,
ConfigureWorkspaceFolderRecommendedExtensionsAction
,
ManageExtensionAction
}
from
'
vs/workbench/parts/extensions/electron-browser/extensionsActions
'
;
import
{
WorkbenchPagedList
}
from
'
vs/platform/list/browser/listService
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
...
...
@@ -41,6 +41,7 @@ import { IListContextMenuEvent, IListEvent } from 'vs/base/browser/ui/list/list'
import
{
createErrorWithActions
}
from
'
vs/base/common/errorsWithActions
'
;
import
{
CancellationToken
}
from
'
vs/base/common/cancellation
'
;
import
{
getKeywordsForExtension
}
from
'
vs/workbench/parts/extensions/electron-browser/extensionsUtils
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
export
class
ExtensionsListView
extends
ViewletPanel
{
...
...
@@ -162,14 +163,22 @@ export class ExtensionsListView extends ViewletPanel {
private
onContextMenu
(
e
:
IListContextMenuEvent
<
IExtension
>
):
void
{
if
(
e
.
element
)
{
this
.
extensionService
.
getExtensions
()
.
then
(
runningExtensions
=>
{
const
manageExtensionAction
=
this
.
instantiationService
.
createInstance
(
ManageExtensionAction
);
manageExtensionAction
.
extension
=
e
.
element
;
const
groups
=
manageExtensionAction
.
getActionGroups
(
runningExtensions
);
let
actions
:
IAction
[]
=
[];
for
(
const
menuActions
of
groups
)
{
actions
=
[...
actions
,
...
menuActions
,
new
Separator
()];
}
if
(
manageExtensionAction
.
enabled
)
{
this
.
contextMenuService
.
showContextMenu
({
getAnchor
:
()
=>
e
.
anchor
,
getActions
:
()
=>
manageExtensionAction
.
createActionItem
().
getActions
(
)
getActions
:
()
=>
actions
.
slice
(
0
,
actions
.
length
-
1
)
});
}
});
}
}
...
...
src/vs/workbench/parts/extensions/electron-browser/media/extensionActions.css
浏览文件 @
23e4cf3a
...
...
@@ -20,8 +20,7 @@
.monaco-action-bar
.action-item
.action-label.extension-action.multiserver.install
:after
,
.monaco-action-bar
.action-item
.action-label.extension-action.multiserver.update
:after
,
.monaco-action-bar
.action-item
.action-label.extension-action.enable.dropdown
:after
,
.monaco-action-bar
.action-item
.action-label.extension-action.disable.dropdown
:after
{
.monaco-action-bar
.action-item
.action-label.extension-action.extension-editor-dropdown-action.dropdown
:after
{
content
:
'▼'
;
padding-left
:
2px
;
font-size
:
80%
;
...
...
@@ -30,8 +29,7 @@
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.install
:not
(
.installing
),
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.uninstall
:not
(
.uninstalling
),
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.update
,
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.enable
,
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.disable
,
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.extension-editor-dropdown-action
,
.monaco-action-bar
.action-item.disabled
.action-label.extension-action.reload
,
.monaco-action-bar
.action-item.disabled
.action-label.disable-status.hide
,
.monaco-action-bar
.action-item.disabled
.action-label.malicious-status.not-malicious
{
...
...
src/vs/workbench/parts/extensions/electron-browser/runtimeExtensionsEditor.ts
浏览文件 @
23e4cf3a
...
...
@@ -23,7 +23,7 @@ import { ActionBar, Separator } from 'vs/base/browser/ui/actionbar/actionbar';
import
{
dispose
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
RunOnceScheduler
}
from
'
vs/base/common/async
'
;
import
{
clipboard
}
from
'
electron
'
;
import
{
LocalExtensionType
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
LocalExtensionType
,
EnablementState
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IWindowService
,
IWindowsService
}
from
'
vs/platform/windows/common/windows
'
;
import
{
writeFile
}
from
'
vs/base/node/pfs
'
;
...
...
@@ -31,7 +31,6 @@ import { IEnvironmentService } from 'vs/platform/environment/common/environment'
import
{
memoize
}
from
'
vs/base/common/decorators
'
;
import
{
isNonEmptyArray
}
from
'
vs/base/common/arrays
'
;
import
{
Event
}
from
'
vs/base/common/event
'
;
import
{
DisableForWorkspaceAction
,
DisableGloballyAction
}
from
'
vs/workbench/parts/extensions/electron-browser/extensionsActions
'
;
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
import
{
RuntimeExtensionsInput
}
from
'
vs/workbench/services/extensions/electron-browser/runtimeExtensionsInput
'
;
import
{
IDebugService
}
from
'
vs/workbench/parts/debug/common/debug
'
;
...
...
@@ -415,10 +414,9 @@ export class RuntimeExtensionsEditor extends BaseEditor {
actions
.
push
(
new
ReportExtensionIssueAction
(
e
.
element
));
actions
.
push
(
new
Separator
());
if
(
e
.
element
.
marketplaceInfo
&&
e
.
element
.
marketplaceInfo
.
type
===
LocalExtensionType
.
User
)
{
actions
.
push
(
this
.
_instantiationService
.
createInstance
(
DisableForWorkspaceAction
,
DisableForWorkspaceAction
.
LABEL
));
actions
.
push
(
this
.
_instantiationService
.
createInstance
(
DisableGloballyAction
,
DisableGloballyAction
.
LABEL
));
actions
.
forEach
((
a
:
DisableForWorkspaceAction
|
DisableGloballyAction
)
=>
a
.
extension
=
e
.
element
.
marketplaceInfo
);
if
(
e
.
element
.
marketplaceInfo
)
{
actions
.
push
(
new
Action
(
'
runtimeExtensionsEditor.action.disableWorkspace
'
,
nls
.
localize
(
'
disable workspace
'
,
"
Disable (Workspace)
"
),
null
,
true
,
()
=>
this
.
_extensionsWorkbenchService
.
setEnablement
(
e
.
element
.
marketplaceInfo
,
EnablementState
.
WorkspaceDisabled
)));
actions
.
push
(
new
Action
(
'
runtimeExtensionsEditor.action.disable
'
,
nls
.
localize
(
'
disable
'
,
"
Disable
"
),
null
,
true
,
()
=>
this
.
_extensionsWorkbenchService
.
setEnablement
(
e
.
element
.
marketplaceInfo
,
EnablementState
.
Disabled
)));
actions
.
push
(
new
Separator
());
}
const
state
=
this
.
_extensionHostProfileService
.
state
;
...
...
src/vs/workbench/parts/extensions/node/extensionsWorkbenchService.ts
浏览文件 @
23e4cf3a
...
...
@@ -371,7 +371,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService,
private
autoUpdateDelayer
:
ThrottledDelayer
<
void
>
;
private
disposables
:
IDisposable
[]
=
[];
private
readonly
_onChange
:
Emitter
<
IExtension
|
undefined
>
=
new
Emitter
<
IExtension
|
undefined
>
();
private
readonly
_onChange
:
Emitter
<
IExtension
|
undefined
>
=
new
Emitter
<
IExtension
|
undefined
>
(
{
leakWarningThreshold
:
200
}
);
get
onChange
():
Event
<
IExtension
|
undefined
>
{
return
this
.
_onChange
.
event
;
}
private
_extensionAllowedBadgeProviders
:
string
[];
...
...
src/vs/workbench/parts/extensions/test/electron-browser/extensionsActions.test.ts
浏览文件 @
23e4cf3a
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录