Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
d90b2db9
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,发现更多精彩内容 >>
提交
d90b2db9
编写于
5月 31, 2018
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fillInActionBarActions and fillInContextMenuActions for clarity
上级
172309ce
变更
14
显示空白变更内容
内联
并排
Showing
14 changed file
with
46 addition
and
44 deletion
+46
-44
src/vs/platform/actions/browser/menuItemActionItem.ts
src/vs/platform/actions/browser/menuItemActionItem.ts
+12
-5
src/vs/platform/actions/common/actions.ts
src/vs/platform/actions/common/actions.ts
+0
-2
src/vs/workbench/browser/parts/editor/editorGroupView.ts
src/vs/workbench/browser/parts/editor/editorGroupView.ts
+2
-2
src/vs/workbench/browser/parts/editor/titleControl.ts
src/vs/workbench/browser/parts/editor/titleControl.ts
+3
-3
src/vs/workbench/browser/parts/views/customViewPanel.ts
src/vs/workbench/browser/parts/views/customViewPanel.ts
+2
-3
src/vs/workbench/browser/parts/views/views.ts
src/vs/workbench/browser/parts/views/views.ts
+3
-3
src/vs/workbench/electron-browser/window.ts
src/vs/workbench/electron-browser/window.ts
+2
-2
src/vs/workbench/parts/debug/browser/baseDebugView.ts
src/vs/workbench/parts/debug/browser/baseDebugView.ts
+2
-2
src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
...ench/parts/files/electron-browser/views/explorerViewer.ts
+3
-3
src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts
...nch/parts/files/electron-browser/views/openEditorsView.ts
+3
-3
src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts
...orkbench/parts/scm/electron-browser/dirtydiffDecorator.ts
+2
-2
src/vs/workbench/parts/scm/electron-browser/scmMenus.ts
src/vs/workbench/parts/scm/electron-browser/scmMenus.ts
+3
-3
src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts
src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts
+6
-8
src/vs/workbench/parts/search/browser/searchResultsView.ts
src/vs/workbench/parts/search/browser/searchResultsView.ts
+3
-3
未找到文件。
src/vs/platform/actions/browser/menuItemActionItem.ts
浏览文件 @
d90b2db9
...
@@ -79,13 +79,20 @@ class AlternativeKeyEmitter extends Emitter<boolean> {
...
@@ -79,13 +79,20 @@ class AlternativeKeyEmitter extends Emitter<boolean> {
}
}
}
}
export
function
fillIn
Actions
(
menu
:
IMenu
,
options
:
IMenuActionOptions
,
target
:
IAction
[]
|
{
primary
:
IAction
[];
secondary
:
IAction
[];
},
contextMenuService
:
IContextMenuService
,
isPrimaryGroup
:
(
group
:
string
)
=>
boolean
=
group
=>
group
===
'
navigation
'
):
void
{
export
function
fillIn
ContextMenuActions
(
menu
:
IMenu
,
options
:
IMenuActionOptions
,
target
:
IAction
[]
|
{
primary
:
IAction
[];
secondary
:
IAction
[];
},
contextMenuService
:
IContextMenuService
,
isPrimaryGroup
?:
(
group
:
string
)
=>
boolean
):
void
{
const
groups
=
menu
.
getActions
(
options
);
const
groups
=
menu
.
getActions
(
options
);
if
(
groups
.
length
===
0
)
{
const
getAlternativeActions
=
AlternativeKeyEmitter
.
getInstance
(
contextMenuService
).
isPressed
;
return
;
}
fillInActions
(
groups
,
target
,
getAlternativeActions
,
isPrimaryGroup
);
const
getAlternativeActions
=
(
!
options
||
!
options
.
ignoreAlternativeActions
)
&&
AlternativeKeyEmitter
.
getInstance
(
contextMenuService
).
isPressed
;
}
export
function
fillInActionBarActions
(
menu
:
IMenu
,
options
:
IMenuActionOptions
,
target
:
IAction
[]
|
{
primary
:
IAction
[];
secondary
:
IAction
[];
},
isPrimaryGroup
?:
(
group
:
string
)
=>
boolean
):
void
{
const
groups
=
menu
.
getActions
(
options
);
// Action bars handle alternative actions on their own so the alternative actions should be ignored
fillInActions
(
groups
,
target
,
false
,
isPrimaryGroup
);
}
function
fillInActions
(
groups
:
[
string
,
MenuItemAction
[]][],
target
:
IAction
[]
|
{
primary
:
IAction
[];
secondary
:
IAction
[];
},
getAlternativeActions
,
isPrimaryGroup
:
(
group
:
string
)
=>
boolean
=
group
=>
group
===
'
navigation
'
):
void
{
for
(
let
tuple
of
groups
)
{
for
(
let
tuple
of
groups
)
{
let
[
group
,
actions
]
=
tuple
;
let
[
group
,
actions
]
=
tuple
;
if
(
getAlternativeActions
)
{
if
(
getAlternativeActions
)
{
...
...
src/vs/platform/actions/common/actions.ts
浏览文件 @
d90b2db9
...
@@ -68,8 +68,6 @@ export class MenuId {
...
@@ -68,8 +68,6 @@ export class MenuId {
export
interface
IMenuActionOptions
{
export
interface
IMenuActionOptions
{
arg
?:
any
;
arg
?:
any
;
shouldForwardArgs
?:
boolean
;
shouldForwardArgs
?:
boolean
;
// Some menu action clients (ActionBar) handle alternative actions on their own so the alternative actions should be ignored
ignoreAlternativeActions
?:
boolean
;
}
}
export
interface
IMenu
extends
IDisposable
{
export
interface
IMenu
extends
IDisposable
{
...
...
src/vs/workbench/browser/parts/editor/editorGroupView.ts
浏览文件 @
d90b2db9
...
@@ -44,7 +44,7 @@ import { CLOSE_EDITOR_GROUP_COMMAND_ID } from 'vs/workbench/browser/parts/editor
...
@@ -44,7 +44,7 @@ import { CLOSE_EDITOR_GROUP_COMMAND_ID } from 'vs/workbench/browser/parts/editor
import
{
NoTabsTitleControl
}
from
'
vs/workbench/browser/parts/editor/noTabsTitleControl
'
;
import
{
NoTabsTitleControl
}
from
'
vs/workbench/browser/parts/editor/noTabsTitleControl
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
StandardMouseEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
StandardMouseEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenu
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
export
class
EditorGroupView
extends
Themable
implements
IEditorGroupView
{
export
class
EditorGroupView
extends
Themable
implements
IEditorGroupView
{
...
@@ -268,7 +268,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView {
...
@@ -268,7 +268,7 @@ export class EditorGroupView extends Themable implements IEditorGroupView {
// Fill in contributed actions
// Fill in contributed actions
const
actions
:
IAction
[]
=
[];
const
actions
:
IAction
[]
=
[];
fillInActions
(
menu
,
void
0
,
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
menu
,
void
0
,
actions
,
this
.
contextMenuService
);
// Show it
// Show it
this
.
contextMenuService
.
showContextMenu
({
this
.
contextMenuService
.
showContextMenu
({
...
...
src/vs/workbench/browser/parts/editor/titleControl.ts
浏览文件 @
d90b2db9
...
@@ -24,7 +24,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
...
@@ -24,7 +24,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
import
{
ResolvedKeybinding
}
from
'
vs/base/common/keyCodes
'
;
import
{
ResolvedKeybinding
}
from
'
vs/base/common/keyCodes
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
createActionItem
,
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
createActionItem
,
fillIn
ContextMenuActions
,
fillInActionBar
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IMenuService
,
MenuId
,
IMenu
,
ExecuteCommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
,
ExecuteCommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
ResourceContextKey
}
from
'
vs/workbench/common/resources
'
;
import
{
ResourceContextKey
}
from
'
vs/workbench/common/resources
'
;
import
{
IThemeService
,
registerThemingParticipant
,
ITheme
,
ICssStyleCollector
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IThemeService
,
registerThemingParticipant
,
ITheme
,
ICssStyleCollector
}
from
'
vs/platform/theme/common/themeService
'
;
...
@@ -171,7 +171,7 @@ export abstract class TitleControl extends Themable {
...
@@ -171,7 +171,7 @@ export abstract class TitleControl extends Themable {
this
.
updateEditorActionsToolbar
();
this
.
updateEditorActionsToolbar
();
}));
}));
fillInAction
s
(
titleBarMenu
,
{
arg
:
this
.
resourceContext
.
get
(),
shouldForwardArgs
:
true
,
ignoreAlternativeActions
:
true
},
{
primary
,
secondary
},
this
.
contextMenuService
);
fillInAction
BarActions
(
titleBarMenu
,
{
arg
:
this
.
resourceContext
.
get
(),
shouldForwardArgs
:
true
},
{
primary
,
secondary
}
);
}
}
return
{
primary
,
secondary
};
return
{
primary
,
secondary
};
...
@@ -267,7 +267,7 @@ export abstract class TitleControl extends Themable {
...
@@ -267,7 +267,7 @@ export abstract class TitleControl extends Themable {
// Fill in contributed actions
// Fill in contributed actions
const
actions
:
IAction
[]
=
[];
const
actions
:
IAction
[]
=
[];
fillInActions
(
this
.
contextMenu
,
{
shouldForwardArgs
:
true
,
arg
:
this
.
resourceContext
.
get
()
},
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
this
.
contextMenu
,
{
shouldForwardArgs
:
true
,
arg
:
this
.
resourceContext
.
get
()
},
actions
,
this
.
contextMenuService
);
// Show it
// Show it
this
.
contextMenuService
.
showContextMenu
({
this
.
contextMenuService
.
showContextMenu
({
...
...
src/vs/workbench/browser/parts/views/customViewPanel.ts
浏览文件 @
d90b2db9
...
@@ -12,7 +12,7 @@ import { IAction, IActionItem } from 'vs/base/common/actions';
...
@@ -12,7 +12,7 @@ import { IAction, IActionItem } from 'vs/base/common/actions';
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IMenuService
,
MenuId
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
fillInActions
,
ContextAwareMenuItemActionItem
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
ContextAwareMenuItemActionItem
,
fillInActionBarActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IViewsService
,
ITreeViewer
}
from
'
vs/workbench/common/views
'
;
import
{
IViewsService
,
ITreeViewer
}
from
'
vs/workbench/common/views
'
;
import
{
IViewletViewOptions
,
IViewOptions
,
ViewsViewletPanel
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
import
{
IViewletViewOptions
,
IViewOptions
,
ViewsViewletPanel
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
...
@@ -103,7 +103,6 @@ export class Menus implements IDisposable {
...
@@ -103,7 +103,6 @@ export class Menus implements IDisposable {
id
:
string
,
id
:
string
,
@
IContextKeyService
private
contextKeyService
:
IContextKeyService
,
@
IContextKeyService
private
contextKeyService
:
IContextKeyService
,
@
IMenuService
private
menuService
:
IMenuService
,
@
IMenuService
private
menuService
:
IMenuService
,
@
IContextMenuService
private
contextMenuService
:
IContextMenuService
)
{
)
{
if
(
this
.
titleDisposable
)
{
if
(
this
.
titleDisposable
)
{
this
.
titleDisposable
.
dispose
();
this
.
titleDisposable
.
dispose
();
...
@@ -117,7 +116,7 @@ export class Menus implements IDisposable {
...
@@ -117,7 +116,7 @@ export class Menus implements IDisposable {
const
updateActions
=
()
=>
{
const
updateActions
=
()
=>
{
this
.
titleActions
=
[];
this
.
titleActions
=
[];
this
.
titleSecondaryActions
=
[];
this
.
titleSecondaryActions
=
[];
fillInAction
s
(
titleMenu
,
{
ignoreAlternativeActions
:
true
},
{
primary
:
this
.
titleActions
,
secondary
:
this
.
titleSecondaryActions
},
this
.
contextMenuService
);
fillInAction
BarActions
(
titleMenu
,
undefined
,
{
primary
:
this
.
titleActions
,
secondary
:
this
.
titleSecondaryActions
}
);
this
.
_onDidChangeTitle
.
fire
();
this
.
_onDidChangeTitle
.
fire
();
};
};
...
...
src/vs/workbench/browser/parts/views/views.ts
浏览文件 @
d90b2db9
...
@@ -26,7 +26,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
...
@@ -26,7 +26,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import
{
IAction
,
ActionRunner
}
from
'
vs/base/common/actions
'
;
import
{
IAction
,
ActionRunner
}
from
'
vs/base/common/actions
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IMenuService
,
MenuId
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
fillInActions
,
ContextAwareMenuItemActionItem
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenu
Actions
,
ContextAwareMenuItemActionItem
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
FileKind
}
from
'
vs/platform/files/common/files
'
;
import
{
FileKind
}
from
'
vs/platform/files/common/files
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
FileIconThemableWorkbenchTree
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
import
{
FileIconThemableWorkbenchTree
}
from
'
vs/workbench/browser/parts/views/viewsViewlet
'
;
...
@@ -642,7 +642,7 @@ class Menus extends Disposable implements IDisposable {
...
@@ -642,7 +642,7 @@ class Menus extends Disposable implements IDisposable {
const
primary
:
IAction
[]
=
[];
const
primary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
result
=
{
primary
,
secondary
};
const
result
=
{
primary
,
secondary
};
fillInActions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
this
.
contextMenuService
,
g
=>
/^inline/
.
test
(
g
));
fillIn
ContextMenu
Actions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
this
.
contextMenuService
,
g
=>
/^inline/
.
test
(
g
));
menu
.
dispose
();
menu
.
dispose
();
contextKeyService
.
dispose
();
contextKeyService
.
dispose
();
...
...
src/vs/workbench/electron-browser/window.ts
浏览文件 @
d90b2db9
...
@@ -35,7 +35,7 @@ import { ipcRenderer as ipc, webFrame } from 'electron';
...
@@ -35,7 +35,7 @@ import { ipcRenderer as ipc, webFrame } from 'electron';
import
{
IWorkspaceEditingService
}
from
'
vs/workbench/services/workspace/common/workspaceEditing
'
;
import
{
IWorkspaceEditingService
}
from
'
vs/workbench/services/workspace/common/workspaceEditing
'
;
import
{
IMenuService
,
MenuId
,
IMenu
,
MenuItemAction
,
ICommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
,
MenuItemAction
,
ICommandAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenu
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
RunOnceScheduler
}
from
'
vs/base/common/async
'
;
import
{
RunOnceScheduler
}
from
'
vs/base/common/async
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
ConfigurationTarget
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
ConfigurationTarget
}
from
'
vs/platform/configuration/common/configuration
'
;
...
@@ -349,7 +349,7 @@ export class ElectronWindow extends Themable {
...
@@ -349,7 +349,7 @@ export class ElectronWindow extends Themable {
const
actions
:
(
MenuItemAction
|
Separator
)[]
=
[];
const
actions
:
(
MenuItemAction
|
Separator
)[]
=
[];
// Fill actions into groups respecting order
// Fill actions into groups respecting order
fillInActions
(
touchBarMenu
,
void
0
,
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
touchBarMenu
,
void
0
,
actions
,
this
.
contextMenuService
);
// Convert into command action multi array
// Convert into command action multi array
const
items
:
ICommandAction
[][]
=
[];
const
items
:
ICommandAction
[][]
=
[];
...
...
src/vs/workbench/parts/debug/browser/baseDebugView.ts
浏览文件 @
d90b2db9
...
@@ -16,7 +16,7 @@ import { once } from 'vs/base/common/functional';
...
@@ -16,7 +16,7 @@ import { once } from 'vs/base/common/functional';
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IControllerOptions
}
from
'
vs/base/parts/tree/browser/treeDefaults
'
;
import
{
IControllerOptions
}
from
'
vs/base/parts/tree/browser/treeDefaults
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenu
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
...
@@ -221,7 +221,7 @@ export class BaseDebugController extends WorkbenchTreeController {
...
@@ -221,7 +221,7 @@ export class BaseDebugController extends WorkbenchTreeController {
this
.
contextMenuService
.
showContextMenu
({
this
.
contextMenuService
.
showContextMenu
({
getAnchor
:
()
=>
anchor
,
getAnchor
:
()
=>
anchor
,
getActions
:
()
=>
this
.
actionProvider
.
getSecondaryActions
(
tree
,
element
).
then
(
actions
=>
{
getActions
:
()
=>
this
.
actionProvider
.
getSecondaryActions
(
tree
,
element
).
then
(
actions
=>
{
fillInActions
(
this
.
contributedContextMenu
,
{
arg
:
this
.
getContext
(
element
)
},
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
this
.
contributedContextMenu
,
{
arg
:
this
.
getContext
(
element
)
},
actions
,
this
.
contextMenuService
);
return
actions
;
return
actions
;
}),
}),
onHide
:
(
wasCancelled
?:
boolean
)
=>
{
onHide
:
(
wasCancelled
?:
boolean
)
=>
{
...
...
src/vs/workbench/parts/files/electron-browser/views/explorerViewer.ts
浏览文件 @
d90b2db9
...
@@ -41,8 +41,6 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
...
@@ -41,8 +41,6 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
IMenuService
,
IMenu
,
MenuId
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
IMenu
,
MenuId
}
from
'
vs/platform/actions/common/actions
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IBackupFileService
}
from
'
vs/workbench/services/backup/common/backup
'
;
import
{
attachInputBoxStyler
}
from
'
vs/platform/theme/common/styler
'
;
import
{
attachInputBoxStyler
}
from
'
vs/platform/theme/common/styler
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IWindowService
}
from
'
vs/platform/windows/common/windows
'
;
import
{
IWindowService
}
from
'
vs/platform/windows/common/windows
'
;
...
@@ -57,6 +55,8 @@ import { rtrim } from 'vs/base/common/strings';
...
@@ -57,6 +55,8 @@ import { rtrim } from 'vs/base/common/strings';
import
{
IDialogService
,
IConfirmationResult
,
IConfirmation
,
getConfirmMessage
}
from
'
vs/platform/dialogs/common/dialogs
'
;
import
{
IDialogService
,
IConfirmationResult
,
IConfirmation
,
getConfirmMessage
}
from
'
vs/platform/dialogs/common/dialogs
'
;
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
import
{
IEditorService
,
SIDE_GROUP
,
ACTIVE_GROUP
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IEditorService
,
SIDE_GROUP
,
ACTIVE_GROUP
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
fillInContextMenuActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IBackupFileService
}
from
'
vs/workbench/services/backup/common/backup
'
;
export
class
FileDataSource
implements
IDataSource
{
export
class
FileDataSource
implements
IDataSource
{
constructor
(
constructor
(
...
@@ -525,7 +525,7 @@ export class FileController extends WorkbenchTreeController implements IDisposab
...
@@ -525,7 +525,7 @@ export class FileController extends WorkbenchTreeController implements IDisposab
getAnchor
:
()
=>
anchor
,
getAnchor
:
()
=>
anchor
,
getActions
:
()
=>
{
getActions
:
()
=>
{
const
actions
:
IAction
[]
=
[];
const
actions
:
IAction
[]
=
[];
fillInActions
(
this
.
contributedContextMenu
,
{
arg
:
stat
instanceof
ExplorerItem
?
stat
.
resource
:
{},
shouldForwardArgs
:
true
},
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
this
.
contributedContextMenu
,
{
arg
:
stat
instanceof
ExplorerItem
?
stat
.
resource
:
{},
shouldForwardArgs
:
true
},
actions
,
this
.
contextMenuService
);
return
TPromise
.
as
(
actions
);
return
TPromise
.
as
(
actions
);
},
},
onHide
:
(
wasCancelled
?:
boolean
)
=>
{
onHide
:
(
wasCancelled
?:
boolean
)
=>
{
...
...
src/vs/workbench/parts/files/electron-browser/views/openEditorsView.ts
浏览文件 @
d90b2db9
...
@@ -34,9 +34,9 @@ import { TPromise } from 'vs/base/common/winjs.base';
...
@@ -34,9 +34,9 @@ import { TPromise } from 'vs/base/common/winjs.base';
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
ITelemetryService
}
from
'
vs/platform/telemetry/common/telemetry
'
;
import
{
IEditorService
,
SIDE_GROUP
,
ACTIVE_GROUP
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IEditorService
,
SIDE_GROUP
,
ACTIVE_GROUP
}
from
'
vs/workbench/services/editor/common/editorService
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
}
from
'
vs/base/common/lifecycle
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenu
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
OpenEditorsGroupContext
,
DirtyEditor
Context
}
from
'
vs/workbench/parts/files/electron-browser/fileCommands
'
;
import
{
DirtyEditorContext
,
OpenEditorsGroup
Context
}
from
'
vs/workbench/parts/files/electron-browser/fileCommands
'
;
import
{
ResourceContextKey
}
from
'
vs/workbench/common/resources
'
;
import
{
ResourceContextKey
}
from
'
vs/workbench/common/resources
'
;
import
{
fillResourceDataTransfers
,
ResourcesDropHandler
,
LocalSelectionTransfer
}
from
'
vs/workbench/browser/dnd
'
;
import
{
fillResourceDataTransfers
,
ResourcesDropHandler
,
LocalSelectionTransfer
}
from
'
vs/workbench/browser/dnd
'
;
...
@@ -373,7 +373,7 @@ export class OpenEditorsView extends ViewsViewletPanel {
...
@@ -373,7 +373,7 @@ export class OpenEditorsView extends ViewsViewletPanel {
getAnchor
:
()
=>
e
.
anchor
,
getAnchor
:
()
=>
e
.
anchor
,
getActions
:
()
=>
{
getActions
:
()
=>
{
const
actions
:
IAction
[]
=
[];
const
actions
:
IAction
[]
=
[];
fillInActions
(
this
.
contributedContextMenu
,
{
shouldForwardArgs
:
true
,
arg
:
element
instanceof
OpenEditor
?
element
.
editor
.
getResource
()
:
{}
},
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
this
.
contributedContextMenu
,
{
shouldForwardArgs
:
true
,
arg
:
element
instanceof
OpenEditor
?
element
.
editor
.
getResource
()
:
{}
},
actions
,
this
.
contextMenuService
);
return
TPromise
.
as
(
actions
);
return
TPromise
.
as
(
actions
);
},
},
getActionsContext
:
()
=>
element
instanceof
OpenEditor
?
{
groupId
:
element
.
groupId
,
editorIndex
:
element
.
editorIndex
}
:
{
groupId
:
element
.
id
}
getActionsContext
:
()
=>
element
instanceof
OpenEditor
?
{
groupId
:
element
.
groupId
,
editorIndex
:
element
.
editorIndex
}
:
{
groupId
:
element
.
id
}
...
...
src/vs/workbench/parts/scm/electron-browser/dirtydiffDecorator.ts
浏览文件 @
d90b2db9
...
@@ -42,7 +42,7 @@ import { IActionBarOptions, ActionsOrientation, IActionItem } from 'vs/base/brow
...
@@ -42,7 +42,7 @@ import { IActionBarOptions, ActionsOrientation, IActionItem } from 'vs/base/brow
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
basename
}
from
'
vs/base/common/paths
'
;
import
{
basename
}
from
'
vs/base/common/paths
'
;
import
{
MenuId
,
IMenuService
,
IMenu
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
MenuId
,
IMenuService
,
IMenu
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
fillInActions
,
MenuItemActionItem
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
MenuItemActionItem
,
fillInActionBarActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
IChange
,
IEditorModel
,
ScrollType
,
IEditorContribution
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IChange
,
IEditorModel
,
ScrollType
,
IEditorContribution
}
from
'
vs/editor/common/editorCommon
'
;
import
{
OverviewRulerLane
,
ITextModel
,
IModelDecorationOptions
}
from
'
vs/editor/common/model
'
;
import
{
OverviewRulerLane
,
ITextModel
,
IModelDecorationOptions
}
from
'
vs/editor/common/model
'
;
import
{
sortedDiff
,
firstIndex
}
from
'
vs/base/common/arrays
'
;
import
{
sortedDiff
,
firstIndex
}
from
'
vs/base/common/arrays
'
;
...
@@ -272,7 +272,7 @@ class DirtyDiffWidget extends PeekViewWidget {
...
@@ -272,7 +272,7 @@ class DirtyDiffWidget extends PeekViewWidget {
this
.
_actionbarWidget
.
push
([
previous
,
next
],
{
label
:
false
,
icon
:
true
});
this
.
_actionbarWidget
.
push
([
previous
,
next
],
{
label
:
false
,
icon
:
true
});
const
actions
:
IAction
[]
=
[];
const
actions
:
IAction
[]
=
[];
fillInAction
s
(
this
.
menu
,
{
shouldForwardArgs
:
true
,
ignoreAlternativeActions
:
true
},
actions
,
this
.
contextMenuService
);
fillInAction
BarActions
(
this
.
menu
,
{
shouldForwardArgs
:
true
},
actions
);
this
.
_actionbarWidget
.
push
(
actions
,
{
label
:
false
,
icon
:
true
});
this
.
_actionbarWidget
.
push
(
actions
,
{
label
:
false
,
icon
:
true
});
}
}
...
...
src/vs/workbench/parts/scm/electron-browser/scmMenus.ts
浏览文件 @
d90b2db9
...
@@ -11,7 +11,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
...
@@ -11,7 +11,7 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
IAction
}
from
'
vs/base/common/actions
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenuActions
,
fillInActionBar
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
ISCMProvider
,
ISCMResource
,
ISCMResourceGroup
}
from
'
vs/workbench/services/scm/common/scm
'
;
import
{
ISCMProvider
,
ISCMResource
,
ISCMResourceGroup
}
from
'
vs/workbench/services/scm/common/scm
'
;
import
{
getSCMResourceContextKey
}
from
'
./scmUtil
'
;
import
{
getSCMResourceContextKey
}
from
'
./scmUtil
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
...
@@ -54,7 +54,7 @@ export class SCMMenus implements IDisposable {
...
@@ -54,7 +54,7 @@ export class SCMMenus implements IDisposable {
this
.
titleActions
=
[];
this
.
titleActions
=
[];
this
.
titleSecondaryActions
=
[];
this
.
titleSecondaryActions
=
[];
// TODO@joao: second arg used to be null
// TODO@joao: second arg used to be null
fillInAction
s
(
this
.
titleMenu
,
{
shouldForwardArgs
:
true
,
ignoreAlternativeActions
:
true
},
{
primary
:
this
.
titleActions
,
secondary
:
this
.
titleSecondaryActions
},
this
.
contextMenuService
);
fillInAction
BarActions
(
this
.
titleMenu
,
{
shouldForwardArgs
:
true
},
{
primary
:
this
.
titleActions
,
secondary
:
this
.
titleSecondaryActions
}
);
this
.
_onDidChangeTitle
.
fire
();
this
.
_onDidChangeTitle
.
fire
();
}
}
...
@@ -90,7 +90,7 @@ export class SCMMenus implements IDisposable {
...
@@ -90,7 +90,7 @@ export class SCMMenus implements IDisposable {
const
primary
:
IAction
[]
=
[];
const
primary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
result
=
{
primary
,
secondary
};
const
result
=
{
primary
,
secondary
};
fillInActions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
this
.
contextMenuService
,
g
=>
/^inline/
.
test
(
g
));
fillIn
ContextMenu
Actions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
this
.
contextMenuService
,
g
=>
/^inline/
.
test
(
g
));
menu
.
dispose
();
menu
.
dispose
();
contextKeyService
.
dispose
();
contextKeyService
.
dispose
();
...
...
src/vs/workbench/parts/scm/electron-browser/scmViewlet.ts
浏览文件 @
d90b2db9
...
@@ -30,7 +30,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
...
@@ -30,7 +30,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
MenuItemAction
,
IMenuService
,
MenuId
}
from
'
vs/platform/actions/common/actions
'
;
import
{
MenuItemAction
,
IMenuService
,
MenuId
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IAction
,
Action
,
IActionItem
,
ActionRunner
}
from
'
vs/base/common/actions
'
;
import
{
IAction
,
Action
,
IActionItem
,
ActionRunner
}
from
'
vs/base/common/actions
'
;
import
{
fillIn
Actions
,
ContextAwareMenuItemActionItem
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenuActions
,
ContextAwareMenuItemActionItem
,
fillInActionBarActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
SCMMenus
}
from
'
./scmMenus
'
;
import
{
SCMMenus
}
from
'
./scmMenus
'
;
import
{
ActionBar
,
IActionItemProvider
,
Separator
,
ActionItem
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
ActionBar
,
IActionItemProvider
,
Separator
,
ActionItem
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
IThemeService
,
LIGHT
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IThemeService
,
LIGHT
}
from
'
vs/platform/theme/common/themeService
'
;
...
@@ -311,7 +311,7 @@ class MainPanel extends ViewletPanel {
...
@@ -311,7 +311,7 @@ class MainPanel extends ViewletPanel {
const
secondary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
result
=
{
primary
,
secondary
};
const
result
=
{
primary
,
secondary
};
fillInActions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
this
.
contextMenuService
,
g
=>
g
===
'
inline
'
);
fillIn
ContextMenu
Actions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
this
.
contextMenuService
,
g
=>
g
===
'
inline
'
);
menu
.
dispose
();
menu
.
dispose
();
contextKeyService
.
dispose
();
contextKeyService
.
dispose
();
...
@@ -381,7 +381,6 @@ class ResourceGroupRenderer implements IRenderer<ISCMResourceGroup, ResourceGrou
...
@@ -381,7 +381,6 @@ class ResourceGroupRenderer implements IRenderer<ISCMResourceGroup, ResourceGrou
private
actionItemProvider
:
IActionItemProvider
,
private
actionItemProvider
:
IActionItemProvider
,
private
themeService
:
IThemeService
,
private
themeService
:
IThemeService
,
private
contextKeyService
:
IContextKeyService
,
private
contextKeyService
:
IContextKeyService
,
private
contextMenuService
:
IContextMenuService
,
private
menuService
:
IMenuService
private
menuService
:
IMenuService
)
{
}
)
{
}
...
@@ -425,7 +424,7 @@ class ResourceGroupRenderer implements IRenderer<ISCMResourceGroup, ResourceGrou
...
@@ -425,7 +424,7 @@ class ResourceGroupRenderer implements IRenderer<ISCMResourceGroup, ResourceGrou
const
primary
:
IAction
[]
=
[];
const
primary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
result
=
{
primary
,
secondary
};
const
result
=
{
primary
,
secondary
};
fillInAction
s
(
menu
,
{
shouldForwardArgs
:
true
,
ignoreAlternativeActions
:
true
},
result
,
this
.
contextMenuService
,
g
=>
/^inline/
.
test
(
g
));
fillInAction
BarActions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
g
=>
/^inline/
.
test
(
g
));
template
.
actionBar
.
clear
();
template
.
actionBar
.
clear
();
template
.
actionBar
.
push
(
primary
,
{
icon
:
true
,
label
:
false
});
template
.
actionBar
.
push
(
primary
,
{
icon
:
true
,
label
:
false
});
...
@@ -489,7 +488,6 @@ class ResourceRenderer implements IRenderer<ISCMResource, ResourceTemplate> {
...
@@ -489,7 +488,6 @@ class ResourceRenderer implements IRenderer<ISCMResource, ResourceTemplate> {
private
themeService
:
IThemeService
,
private
themeService
:
IThemeService
,
private
instantiationService
:
IInstantiationService
,
private
instantiationService
:
IInstantiationService
,
private
contextKeyService
:
IContextKeyService
,
private
contextKeyService
:
IContextKeyService
,
private
contextMenuService
:
IContextMenuService
,
private
menuService
:
IMenuService
private
menuService
:
IMenuService
)
{
}
)
{
}
...
@@ -537,7 +535,7 @@ class ResourceRenderer implements IRenderer<ISCMResource, ResourceTemplate> {
...
@@ -537,7 +535,7 @@ class ResourceRenderer implements IRenderer<ISCMResource, ResourceTemplate> {
const
primary
:
IAction
[]
=
[];
const
primary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
secondary
:
IAction
[]
=
[];
const
result
=
{
primary
,
secondary
};
const
result
=
{
primary
,
secondary
};
fillInAction
s
(
menu
,
{
shouldForwardArgs
:
true
,
ignoreAlternativeActions
:
true
},
result
,
this
.
contextMenuService
,
g
=>
/^inline/
.
test
(
g
));
fillInAction
BarActions
(
menu
,
{
shouldForwardArgs
:
true
},
result
,
g
=>
/^inline/
.
test
(
g
));
template
.
actionBar
.
clear
();
template
.
actionBar
.
clear
();
template
.
actionBar
.
push
(
primary
,
{
icon
:
true
,
label
:
false
});
template
.
actionBar
.
push
(
primary
,
{
icon
:
true
,
label
:
false
});
...
@@ -872,8 +870,8 @@ export class RepositoryPanel extends ViewletPanel {
...
@@ -872,8 +870,8 @@ export class RepositoryPanel extends ViewletPanel {
const
actionItemProvider
=
(
action
:
IAction
)
=>
this
.
getActionItem
(
action
);
const
actionItemProvider
=
(
action
:
IAction
)
=>
this
.
getActionItem
(
action
);
const
renderers
=
[
const
renderers
=
[
new
ResourceGroupRenderer
(
actionItemProvider
,
this
.
themeService
,
this
.
contextKeyService
,
this
.
contextMenuService
,
this
.
menuService
),
new
ResourceGroupRenderer
(
actionItemProvider
,
this
.
themeService
,
this
.
contextKeyService
,
this
.
menuService
),
new
ResourceRenderer
(
actionItemProvider
,
()
=>
this
.
getSelectedResources
(),
this
.
themeService
,
this
.
instantiationService
,
this
.
contextKeyService
,
this
.
contextMenuService
,
this
.
menuService
)
new
ResourceRenderer
(
actionItemProvider
,
()
=>
this
.
getSelectedResources
(),
this
.
themeService
,
this
.
instantiationService
,
this
.
contextKeyService
,
this
.
menuService
)
];
];
this
.
list
=
this
.
instantiationService
.
createInstance
(
WorkbenchList
,
this
.
listContainer
,
delegate
,
renderers
,
{
this
.
list
=
this
.
instantiationService
.
createInstance
(
WorkbenchList
,
this
.
listContainer
,
delegate
,
renderers
,
{
...
...
src/vs/workbench/parts/search/browser/searchResultsView.ts
浏览文件 @
d90b2db9
...
@@ -26,7 +26,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
...
@@ -26,7 +26,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IContextMenuService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
IMenuService
,
MenuId
,
IMenu
}
from
'
vs/platform/actions/common/actions
'
;
import
{
WorkbenchTreeController
,
WorkbenchTree
}
from
'
vs/platform/list/browser/listService
'
;
import
{
WorkbenchTreeController
,
WorkbenchTree
}
from
'
vs/platform/list/browser/listService
'
;
import
{
fillInActions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
import
{
fillIn
ContextMenu
Actions
}
from
'
vs/platform/actions/browser/menuItemActionItem
'
;
export
class
SearchDataSource
implements
IDataSource
{
export
class
SearchDataSource
implements
IDataSource
{
...
@@ -372,7 +372,7 @@ export class SearchTreeController extends WorkbenchTreeController {
...
@@ -372,7 +372,7 @@ export class SearchTreeController extends WorkbenchTreeController {
getActions
:
()
=>
{
getActions
:
()
=>
{
const
actions
:
IAction
[]
=
[];
const
actions
:
IAction
[]
=
[];
fillInActions
(
this
.
contextMenu
,
{
shouldForwardArgs
:
true
},
actions
,
this
.
contextMenuService
);
fillIn
ContextMenu
Actions
(
this
.
contextMenu
,
{
shouldForwardArgs
:
true
},
actions
,
this
.
contextMenuService
);
return
TPromise
.
as
(
actions
);
return
TPromise
.
as
(
actions
);
},
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录