Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
f4c6b7cd
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,发现更多精彩内容 >>
提交
f4c6b7cd
编写于
2月 19, 2020
作者:
S
Sandeep Somavarapu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #86915
上级
84cab0b3
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
55 addition
and
13 deletion
+55
-13
src/vs/platform/userDataSync/common/userDataSync.ts
src/vs/platform/userDataSync/common/userDataSync.ts
+1
-0
src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts
...nch/contrib/extensions/browser/extensions.contribution.ts
+30
-1
src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
...workbench/contrib/extensions/browser/extensionsActions.ts
+16
-6
src/vs/workbench/contrib/extensions/browser/extensionsViews.ts
...s/workbench/contrib/extensions/browser/extensionsViews.ts
+1
-1
src/vs/workbench/contrib/extensions/common/extensions.ts
src/vs/workbench/contrib/extensions/common/extensions.ts
+2
-0
src/vs/workbench/contrib/preferences/browser/settingsTree.ts
src/vs/workbench/contrib/preferences/browser/settingsTree.ts
+4
-3
src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts
...vs/workbench/contrib/userDataSync/browser/userDataSync.ts
+1
-2
未找到文件。
src/vs/platform/userDataSync/common/userDataSync.ts
浏览文件 @
f4c6b7cd
...
...
@@ -335,6 +335,7 @@ export interface ISettingsSyncService extends IUserDataSynchroniser {
//#endregion
export
const
CONTEXT_SYNC_STATE
=
new
RawContextKey
<
string
>
(
'
syncStatus
'
,
SyncStatus
.
Uninitialized
);
export
const
CONTEXT_SYNC_ENABLEMENT
=
new
RawContextKey
<
boolean
>
(
'
syncEnabled
'
,
false
);
export
const
USER_DATA_SYNC_SCHEME
=
'
vscode-userdata-sync
'
;
export
function
toRemoteContentResource
(
source
:
SyncSource
):
URI
{
...
...
src/vs/workbench/contrib/extensions/browser/extensions.contribution.ts
浏览文件 @
f4c6b7cd
...
...
@@ -14,7 +14,7 @@ import { IWorkbenchActionRegistry, Extensions as WorkbenchActionExtensions } fro
import
{
IWorkbenchContributionsRegistry
,
Extensions
as
WorkbenchExtensions
,
IWorkbenchContribution
}
from
'
vs/workbench/common/contributions
'
;
import
{
IOutputChannelRegistry
,
Extensions
as
OutputExtensions
}
from
'
vs/workbench/services/output/common/output
'
;
import
{
SyncDescriptor
}
from
'
vs/platform/instantiation/common/descriptors
'
;
import
{
VIEWLET_ID
,
IExtensionsWorkbenchService
,
IExtensionsViewPaneContainer
}
from
'
vs/workbench/contrib/extensions/common/extensions
'
;
import
{
VIEWLET_ID
,
IExtensionsWorkbenchService
,
IExtensionsViewPaneContainer
,
TOGGLE_IGNORE_EXTENSION_ACTION_ID
}
from
'
vs/workbench/contrib/extensions/common/extensions
'
;
import
{
ExtensionsWorkbenchService
}
from
'
vs/workbench/contrib/extensions/browser/extensionsWorkbenchService
'
;
import
{
OpenExtensionsViewletAction
,
InstallExtensionsAction
,
ShowOutdatedExtensionsAction
,
ShowRecommendedExtensionsAction
,
ShowRecommendedKeymapExtensionsAction
,
ShowPopularExtensionsAction
,
...
...
@@ -48,6 +48,8 @@ import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService
import
{
IPreferencesService
}
from
'
vs/workbench/services/preferences/common/preferences
'
;
import
{
ContextKeyExpr
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IViewletService
}
from
'
vs/workbench/services/viewlet/browser/viewlet
'
;
import
{
IConfigurationService
,
ConfigurationTarget
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
CONTEXT_SYNC_ENABLEMENT
}
from
'
vs/platform/userDataSync/common/userDataSync
'
;
// Singletons
registerSingleton
(
IExtensionsWorkbenchService
,
ExtensionsWorkbenchService
);
...
...
@@ -435,6 +437,33 @@ registerAction2(class extends Action2 {
}
});
registerAction2
(
class
extends
Action2
{
constructor
()
{
super
({
id
:
TOGGLE_IGNORE_EXTENSION_ACTION_ID
,
title
:
{
value
:
localize
(
'
workbench.extensions.action.toggleIgnoreExtension
'
,
"
Don't Sync This Extension
"
),
original
:
`Don't Sync This Extension`
},
menu
:
{
id
:
MenuId
.
ExtensionContext
,
group
:
'
2_configure
'
,
when
:
CONTEXT_SYNC_ENABLEMENT
},
});
}
async
run
(
accessor
:
ServicesAccessor
,
id
:
string
)
{
const
configurationService
=
accessor
.
get
(
IConfigurationService
);
const
ignoredExtensions
=
[...
configurationService
.
getValue
<
string
[]
>
(
'
sync.ignoredExtensions
'
)];
const
index
=
ignoredExtensions
.
findIndex
(
ignoredExtension
=>
areSameExtensions
({
id
:
ignoredExtension
},
{
id
}));
if
(
index
!==
-
1
)
{
ignoredExtensions
.
splice
(
index
,
1
);
}
else
{
ignoredExtensions
.
push
(
id
);
}
return
configurationService
.
updateValue
(
'
sync.ignoredExtensions
'
,
ignoredExtensions
.
length
?
ignoredExtensions
:
undefined
,
ConfigurationTarget
.
USER
);
}
});
const
workbenchRegistry
=
Registry
.
as
<
IWorkbenchContributionsRegistry
>
(
WorkbenchExtensions
.
Workbench
);
class
ExtensionsContributions
implements
IWorkbenchContribution
{
...
...
src/vs/workbench/contrib/extensions/browser/extensionsActions.ts
浏览文件 @
f4c6b7cd
...
...
@@ -13,7 +13,7 @@ import * as json from 'vs/base/common/json';
import
{
ActionViewItem
,
Separator
,
IActionViewItemOptions
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
dispose
,
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IExtension
,
ExtensionState
,
IExtensionsWorkbenchService
,
VIEWLET_ID
,
IExtensionsViewPaneContainer
,
AutoUpdateConfigurationKey
,
IExtensionContainer
,
EXTENSIONS_CONFIG
}
from
'
vs/workbench/contrib/extensions/common/extensions
'
;
import
{
IExtension
,
ExtensionState
,
IExtensionsWorkbenchService
,
VIEWLET_ID
,
IExtensionsViewPaneContainer
,
AutoUpdateConfigurationKey
,
IExtensionContainer
,
EXTENSIONS_CONFIG
,
TOGGLE_IGNORE_EXTENSION_ACTION_ID
}
from
'
vs/workbench/contrib/extensions/common/extensions
'
;
import
{
ExtensionsConfigurationInitialContent
}
from
'
vs/workbench/contrib/extensions/common/extensionsFileTemplate
'
;
import
{
ExtensionsLabel
,
IGalleryExtension
,
IExtensionGalleryService
,
INSTALL_ERROR_MALICIOUS
,
INSTALL_ERROR_INCOMPATIBLE
,
IGalleryExtensionVersion
,
ILocalExtension
,
INSTALL_ERROR_NOT_SUPPORTED
}
from
'
vs/platform/extensionManagement/common/extensionManagement
'
;
import
{
IWorkbenchExtensionEnablementService
,
EnablementState
,
IExtensionManagementServerService
,
IExtensionTipsService
,
IExtensionRecommendation
,
IExtensionsConfigContent
,
IExtensionManagementServer
}
from
'
vs/workbench/services/extensionManagement/common/extensionManagement
'
;
...
...
@@ -660,7 +660,7 @@ export class DropDownMenuActionViewItem extends ExtensionActionViewItem {
}
}
export
function
getContextMenuActions
(
menuService
:
IMenuService
,
contextKeyService
:
IContextKeyService
,
extension
:
IExtension
|
undefined
|
null
):
ExtensionAction
[][]
{
export
function
getContextMenuActions
(
menuService
:
IMenuService
,
contextKeyService
:
IContextKeyService
,
instantiationService
:
IInstantiationService
,
extension
:
IExtension
|
undefined
|
null
):
ExtensionAction
[][]
{
const
scopedContextKeyService
=
contextKeyService
.
createScoped
();
if
(
extension
)
{
scopedContextKeyService
.
createKey
<
boolean
>
(
'
isBuiltinExtension
'
,
extension
.
type
===
ExtensionType
.
System
);
...
...
@@ -672,7 +672,7 @@ export function getContextMenuActions(menuService: IMenuService, contextKeyServi
const
groups
:
ExtensionAction
[][]
=
[];
const
menu
=
menuService
.
createMenu
(
MenuId
.
ExtensionContext
,
scopedContextKeyService
);
menu
.
getActions
({
shouldForwardArgs
:
true
}).
forEach
(([,
actions
])
=>
groups
.
push
(
actions
.
map
(
action
=>
new
MenuItemExtensionAction
(
action
))));
menu
.
getActions
({
shouldForwardArgs
:
true
}).
forEach
(([,
actions
])
=>
groups
.
push
(
actions
.
map
(
action
=>
instantiationService
.
createInstance
(
MenuItemExtensionAction
,
action
))));
menu
.
dispose
();
return
groups
;
...
...
@@ -726,7 +726,7 @@ export class ManageExtensionAction extends ExtensionDropDownAction {
groups
.
push
([
this
.
instantiationService
.
createInstance
(
UninstallAction
)]);
groups
.
push
([
this
.
instantiationService
.
createInstance
(
InstallAnotherVersionAction
)]);
getContextMenuActions
(
this
.
menuService
,
this
.
contextKeyService
,
this
.
extension
).
forEach
(
actions
=>
groups
.
push
(
actions
));
getContextMenuActions
(
this
.
menuService
,
this
.
contextKeyService
,
this
.
instantiationService
,
this
.
extension
).
forEach
(
actions
=>
groups
.
push
(
actions
));
groups
.
forEach
(
group
=>
group
.
forEach
(
extensionAction
=>
extensionAction
.
extension
=
this
.
extension
));
...
...
@@ -754,11 +754,21 @@ export class ManageExtensionAction extends ExtensionDropDownAction {
export
class
MenuItemExtensionAction
extends
ExtensionAction
{
constructor
(
private
readonly
action
:
IAction
)
{
constructor
(
private
readonly
action
:
IAction
,
@
IConfigurationService
private
readonly
configurationService
:
IConfigurationService
)
{
super
(
action
.
id
,
action
.
label
);
}
update
()
{
}
update
()
{
if
(
!
this
.
extension
)
{
return
;
}
if
(
this
.
action
.
id
===
TOGGLE_IGNORE_EXTENSION_ACTION_ID
)
{
this
.
checked
=
this
.
configurationService
.
getValue
<
string
[]
>
(
'
sync.ignoredExtensions
'
).
some
(
id
=>
areSameExtensions
({
id
},
this
.
extension
!
.
identifier
));
}
}
async
run
():
Promise
<
void
>
{
if
(
this
.
extension
)
{
...
...
src/vs/workbench/contrib/extensions/browser/extensionsViews.ts
浏览文件 @
f4c6b7cd
...
...
@@ -247,7 +247,7 @@ export class ExtensionsListView extends ViewPane {
getActions
:
()
=>
actions
.
slice
(
0
,
actions
.
length
-
1
)
});
}
else
if
(
e
.
element
)
{
const
groups
=
getContextMenuActions
(
this
.
menuService
,
this
.
contextKeyService
.
createScoped
(),
e
.
element
);
const
groups
=
getContextMenuActions
(
this
.
menuService
,
this
.
contextKeyService
.
createScoped
(),
this
.
instantiationService
,
e
.
element
);
groups
.
forEach
(
group
=>
group
.
forEach
(
extensionAction
=>
extensionAction
.
extension
=
e
.
element
!
));
let
actions
:
IAction
[]
=
[];
for
(
const
menuActions
of
groups
)
{
...
...
src/vs/workbench/contrib/extensions/common/extensions.ts
浏览文件 @
f4c6b7cd
...
...
@@ -140,3 +140,5 @@ export class ExtensionContainers extends Disposable {
}
}
}
export
const
TOGGLE_IGNORE_EXTENSION_ACTION_ID
=
'
workbench.extensions.action.toggleIgnoreExtension
'
;
src/vs/workbench/contrib/preferences/browser/settingsTree.ts
浏览文件 @
f4c6b7cd
...
...
@@ -1640,12 +1640,13 @@ class StopSyncingSettingAction extends Action {
}
async
run
():
Promise
<
void
>
{
const
currentValue
=
this
.
configService
.
getValue
<
string
[]
>
(
'
sync.ignoredSettings
'
)
;
let
currentValue
=
[...
this
.
configService
.
getValue
<
string
[]
>
(
'
sync.ignoredSettings
'
)]
;
if
(
this
.
checked
)
{
this
.
configService
.
updateValue
(
'
sync.ignoredSettings
'
,
currentValue
.
filter
(
v
=>
v
!==
this
.
setting
.
key
)
);
currentValue
=
currentValue
.
filter
(
v
=>
v
!==
this
.
setting
.
key
);
}
else
{
this
.
configService
.
updateValue
(
'
sync.ignoredSettings
'
,
[...
currentValue
,
this
.
setting
.
key
]
);
currentValue
.
push
(
this
.
setting
.
key
);
}
this
.
configService
.
updateValue
(
'
sync.ignoredSettings
'
,
currentValue
.
length
?
currentValue
:
undefined
,
ConfigurationTarget
.
USER
);
return
Promise
.
resolve
(
undefined
);
}
...
...
src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts
浏览文件 @
f4c6b7cd
...
...
@@ -31,7 +31,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import
{
INotificationService
,
Severity
}
from
'
vs/platform/notification/common/notification
'
;
import
{
IQuickInputService
}
from
'
vs/platform/quickinput/common/quickInput
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
CONTEXT_SYNC_STATE
,
getSyncSourceFromRemoteContentResource
,
getUserDataSyncStore
,
ISyncConfiguration
,
IUserDataAuthTokenService
,
IUserDataAutoSyncService
,
IUserDataSyncService
,
IUserDataSyncStore
,
registerConfiguration
,
SyncSource
,
SyncStatus
,
toRemoteContentResource
,
UserDataSyncError
,
UserDataSyncErrorCode
,
USER_DATA_SYNC_SCHEME
,
IUserDataSyncEnablementService
,
ResourceKey
,
getSyncSourceFromPreviewResource
}
from
'
vs/platform/userDataSync/common/userDataSync
'
;
import
{
CONTEXT_SYNC_STATE
,
getSyncSourceFromRemoteContentResource
,
getUserDataSyncStore
,
ISyncConfiguration
,
IUserDataAuthTokenService
,
IUserDataAutoSyncService
,
IUserDataSyncService
,
IUserDataSyncStore
,
registerConfiguration
,
SyncSource
,
SyncStatus
,
toRemoteContentResource
,
UserDataSyncError
,
UserDataSyncErrorCode
,
USER_DATA_SYNC_SCHEME
,
IUserDataSyncEnablementService
,
ResourceKey
,
getSyncSourceFromPreviewResource
,
CONTEXT_SYNC_ENABLEMENT
}
from
'
vs/platform/userDataSync/common/userDataSync
'
;
import
{
FloatingClickWidget
}
from
'
vs/workbench/browser/parts/editor/editorWidgets
'
;
import
{
GLOBAL_ACTIVITY_ID
}
from
'
vs/workbench/common/activity
'
;
import
{
IWorkbenchContribution
}
from
'
vs/workbench/common/contributions
'
;
...
...
@@ -52,7 +52,6 @@ const enum AuthStatus {
SignedOut
=
'
SignedOut
'
,
Unavailable
=
'
Unavailable
'
}
const
CONTEXT_SYNC_ENABLEMENT
=
new
RawContextKey
<
boolean
>
(
'
syncEnabled
'
,
false
);
const
CONTEXT_AUTH_TOKEN_STATE
=
new
RawContextKey
<
string
>
(
'
authTokenStatus
'
,
AuthStatus
.
Initializing
);
const
CONTEXT_CONFLICTS_SOURCES
=
new
RawContextKey
<
string
>
(
'
conflictsSources
'
,
''
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录