Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
43b39d5a
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,发现更多精彩内容 >>
提交
43b39d5a
编写于
11月 19, 2019
作者:
M
Miguel Solorio
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of github.com:Microsoft/vscode
上级
ac0e9fbe
34b88074
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
47 addition
and
16 deletion
+47
-16
src/vs/workbench/contrib/files/browser/fileActions.contribution.ts
...rkbench/contrib/files/browser/fileActions.contribution.ts
+3
-3
src/vs/workbench/contrib/files/browser/fileActions.ts
src/vs/workbench/contrib/files/browser/fileActions.ts
+10
-6
src/vs/workbench/contrib/files/browser/fileCommands.ts
src/vs/workbench/contrib/files/browser/fileCommands.ts
+27
-3
src/vs/workbench/contrib/files/browser/views/explorerView.ts
src/vs/workbench/contrib/files/browser/views/explorerView.ts
+7
-4
未找到文件。
src/vs/workbench/contrib/files/browser/fileActions.contribution.ts
浏览文件 @
43b39d5a
...
...
@@ -77,7 +77,7 @@ const MOVE_FILE_TO_TRASH_ID = 'moveFileToTrash';
KeybindingsRegistry
.
registerCommandAndKeybindingRule
({
id
:
MOVE_FILE_TO_TRASH_ID
,
weight
:
KeybindingWeight
.
WorkbenchContrib
+
explorerCommandsWeightBonus
,
when
:
ContextKeyExpr
.
and
(
FilesExplorerFocusCondition
,
ExplorerR
ootContext
.
toNegated
(),
ExplorerR
esourceNotReadonlyContext
,
ExplorerResourceMoveableToTrash
),
when
:
ContextKeyExpr
.
and
(
FilesExplorerFocusCondition
,
ExplorerResourceNotReadonlyContext
,
ExplorerResourceMoveableToTrash
),
primary
:
KeyCode
.
Delete
,
mac
:
{
primary
:
KeyMod
.
CtrlCmd
|
KeyCode
.
Backspace
...
...
@@ -89,7 +89,7 @@ const DELETE_FILE_ID = 'deleteFile';
KeybindingsRegistry
.
registerCommandAndKeybindingRule
({
id
:
DELETE_FILE_ID
,
weight
:
KeybindingWeight
.
WorkbenchContrib
+
explorerCommandsWeightBonus
,
when
:
ContextKeyExpr
.
and
(
FilesExplorerFocusCondition
,
ExplorerR
ootContext
.
toNegated
(),
ExplorerR
esourceNotReadonlyContext
),
when
:
ContextKeyExpr
.
and
(
FilesExplorerFocusCondition
,
ExplorerResourceNotReadonlyContext
),
primary
:
KeyMod
.
Shift
|
KeyCode
.
Delete
,
mac
:
{
primary
:
KeyMod
.
CtrlCmd
|
KeyMod
.
Alt
|
KeyCode
.
Backspace
...
...
@@ -100,7 +100,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({
KeybindingsRegistry
.
registerCommandAndKeybindingRule
({
id
:
DELETE_FILE_ID
,
weight
:
KeybindingWeight
.
WorkbenchContrib
+
explorerCommandsWeightBonus
,
when
:
ContextKeyExpr
.
and
(
FilesExplorerFocusCondition
,
ExplorerR
ootContext
.
toNegated
(),
ExplorerR
esourceNotReadonlyContext
,
ExplorerResourceMoveableToTrash
.
toNegated
()),
when
:
ContextKeyExpr
.
and
(
FilesExplorerFocusCondition
,
ExplorerResourceNotReadonlyContext
,
ExplorerResourceMoveableToTrash
.
toNegated
()),
primary
:
KeyCode
.
Delete
,
mac
:
{
primary
:
KeyMod
.
CtrlCmd
|
KeyCode
.
Backspace
...
...
src/vs/workbench/contrib/files/browser/fileActions.ts
浏览文件 @
43b39d5a
...
...
@@ -937,17 +937,21 @@ export const renameHandler = (accessor: ServicesAccessor) => {
});
};
export
const
moveFileToTrashHandler
=
(
accessor
:
ServicesAccessor
)
=>
{
export
const
moveFileToTrashHandler
=
async
(
accessor
:
ServicesAccessor
)
=>
{
const
explorerService
=
accessor
.
get
(
IExplorerService
);
const
stats
=
explorerService
.
getContext
(
true
);
return
deleteFiles
(
accessor
.
get
(
ITextFileService
),
accessor
.
get
(
IDialogService
),
accessor
.
get
(
IConfigurationService
),
accessor
.
get
(
IFileService
),
stats
,
true
);
const
stats
=
explorerService
.
getContext
(
true
).
filter
(
s
=>
!
s
.
isRoot
);
if
(
stats
.
length
)
{
await
deleteFiles
(
accessor
.
get
(
ITextFileService
),
accessor
.
get
(
IDialogService
),
accessor
.
get
(
IConfigurationService
),
accessor
.
get
(
IFileService
),
stats
,
true
);
}
};
export
const
deleteFileHandler
=
(
accessor
:
ServicesAccessor
)
=>
{
export
const
deleteFileHandler
=
async
(
accessor
:
ServicesAccessor
)
=>
{
const
explorerService
=
accessor
.
get
(
IExplorerService
);
const
stats
=
explorerService
.
getContext
(
true
);
const
stats
=
explorerService
.
getContext
(
true
)
.
filter
(
s
=>
!
s
.
isRoot
)
;
return
deleteFiles
(
accessor
.
get
(
ITextFileService
),
accessor
.
get
(
IDialogService
),
accessor
.
get
(
IConfigurationService
),
accessor
.
get
(
IFileService
),
stats
,
false
);
if
(
stats
.
length
)
{
await
deleteFiles
(
accessor
.
get
(
ITextFileService
),
accessor
.
get
(
IDialogService
),
accessor
.
get
(
IConfigurationService
),
accessor
.
get
(
IFileService
),
stats
,
false
);
}
};
let
pasteShouldMove
=
false
;
...
...
src/vs/workbench/contrib/files/browser/fileCommands.ts
浏览文件 @
43b39d5a
...
...
@@ -37,6 +37,9 @@ import { IDisposable, dispose } from 'vs/base/common/lifecycle';
import
{
IEnvironmentService
}
from
'
vs/platform/environment/common/environment
'
;
import
{
UNTITLED_WORKSPACE_NAME
}
from
'
vs/platform/workspaces/common/workspaces
'
;
import
{
coalesce
}
from
'
vs/base/common/arrays
'
;
import
{
ICodeEditorService
}
from
'
vs/editor/browser/services/codeEditorService
'
;
import
{
EmbeddedCodeEditorWidget
}
from
'
vs/editor/browser/widget/embeddedCodeEditorWidget
'
;
import
{
ITextFileService
}
from
'
vs/workbench/services/textfile/common/textfiles
'
;
// Commands
...
...
@@ -310,11 +313,32 @@ CommandsRegistry.registerCommand({
// Save / Save As / Save All / Revert
function
saveSelectedEditors
(
accessor
:
ServicesAccessor
,
options
?:
ISaveEditorsOptions
):
Promise
<
void
>
{
async
function
saveSelectedEditors
(
accessor
:
ServicesAccessor
,
options
?:
ISaveEditorsOptions
):
Promise
<
void
>
{
const
listService
=
accessor
.
get
(
IListService
);
const
editorGroupsService
=
accessor
.
get
(
IEditorGroupsService
);
return
doSaveEditors
(
accessor
,
getMultiSelectedEditors
(
listService
,
editorGroupsService
),
options
);
const
codeEditorService
=
accessor
.
get
(
ICodeEditorService
);
const
textFileService
=
accessor
.
get
(
ITextFileService
);
// Save editors
const
editors
=
getMultiSelectedEditors
(
listService
,
editorGroupsService
);
await
doSaveEditors
(
accessor
,
editors
,
options
);
// Special treatment for embedded editors: if we detect that focus is
// inside an embedded code editor, we save that model as well if we
// find it in our text file models. Currently, only textual editors
// support embedded editors.
const
focusedCodeEditor
=
codeEditorService
.
getFocusedCodeEditor
();
if
(
focusedCodeEditor
instanceof
EmbeddedCodeEditorWidget
)
{
const
resource
=
focusedCodeEditor
.
getModel
()?.
uri
;
// Check that the resource of the model was not saved already
if
(
resource
&&
!
editors
.
some
(({
editor
})
=>
isEqual
(
toResource
(
editor
,
{
supportSideBySide
:
SideBySideEditor
.
MASTER
}),
resource
)))
{
const
model
=
textFileService
.
models
.
get
(
resource
);
if
(
!
model
?.
isReadonly
())
{
await
textFileService
.
save
(
resource
,
options
);
}
}
}
}
function
saveDirtyEditorsOfGroups
(
accessor
:
ServicesAccessor
,
groups
:
ReadonlyArray
<
IEditorGroup
>
,
options
?:
ISaveEditorsOptions
):
Promise
<
void
>
{
...
...
src/vs/workbench/contrib/files/browser/views/explorerView.ts
浏览文件 @
43b39d5a
...
...
@@ -293,10 +293,6 @@ export class ExplorerView extends ViewletPanel {
focusedStat
=
focus
.
length
?
focus
[
0
]
:
undefined
;
}
if
(
!
focusedStat
)
{
return
[];
}
const
selectedStats
:
ExplorerItem
[]
=
[];
for
(
const
stat
of
this
.
tree
.
getSelection
())
{
...
...
@@ -308,6 +304,13 @@ export class ExplorerView extends ViewletPanel {
selectedStats
.
push
(
stat
);
}
}
if
(
!
focusedStat
)
{
if
(
respectMultiSelection
)
{
return
selectedStats
;
}
else
{
return
[];
}
}
if
(
respectMultiSelection
&&
selectedStats
.
indexOf
(
focusedStat
)
>=
0
)
{
return
selectedStats
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录