Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
8efa538d
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,发现更多精彩内容 >>
提交
8efa538d
编写于
11月 18, 2019
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
editors - tweak readonly usage
上级
dcf4572a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
16 addition
and
17 deletion
+16
-17
src/vs/workbench/common/editor.ts
src/vs/workbench/common/editor.ts
+5
-1
src/vs/workbench/contrib/files/browser/fileCommands.ts
src/vs/workbench/contrib/files/browser/fileCommands.ts
+7
-12
src/vs/workbench/services/editor/browser/editorService.ts
src/vs/workbench/services/editor/browser/editorService.ts
+4
-4
未找到文件。
src/vs/workbench/common/editor.ts
浏览文件 @
8efa538d
...
...
@@ -545,7 +545,11 @@ export abstract class TextEditorInput extends EditorInput {
return
this
.
resource
;
}
save
(
groupId
:
GroupIdentifier
,
options
?:
ITextFileSaveOptions
):
Promise
<
boolean
>
{
async
save
(
groupId
:
GroupIdentifier
,
options
?:
ITextFileSaveOptions
):
Promise
<
boolean
>
{
if
(
this
.
isReadonly
())
{
return
false
;
// return early if editor is readonly
}
return
this
.
textFileService
.
save
(
this
.
resource
,
options
);
}
...
...
src/vs/workbench/contrib/files/browser/fileCommands.ts
浏览文件 @
8efa538d
...
...
@@ -314,19 +314,14 @@ function saveSelectedEditors(accessor: ServicesAccessor, options?: ISaveEditorsO
const
listService
=
accessor
.
get
(
IListService
);
const
editorGroupsService
=
accessor
.
get
(
IEditorGroupsService
);
let
saveableEditors
=
getMultiSelectedEditors
(
listService
,
editorGroupsService
);
if
(
!
options
?.
saveAs
)
{
saveableEditors
=
saveableEditors
.
filter
(({
editor
})
=>
!
editor
.
isReadonly
());
// Save: only allow non-readonly editors
}
return
doSaveEditors
(
accessor
,
saveableEditors
,
options
);
return
doSaveEditors
(
accessor
,
getMultiSelectedEditors
(
listService
,
editorGroupsService
),
options
);
}
function
saveEditorsOfGroups
(
accessor
:
ServicesAccessor
,
groups
:
ReadonlyArray
<
IEditorGroup
>
,
options
?:
ISaveEditorsOptions
):
Promise
<
void
>
{
function
save
Dirty
EditorsOfGroups
(
accessor
:
ServicesAccessor
,
groups
:
ReadonlyArray
<
IEditorGroup
>
,
options
?:
ISaveEditorsOptions
):
Promise
<
void
>
{
const
saveableEditors
:
IEditorIdentifier
[]
=
[];
for
(
const
group
of
groups
)
{
for
(
const
editor
of
group
.
getEditors
(
EditorsOrder
.
MOST_RECENTLY_ACTIVE
))
{
if
(
editor
.
isDirty
()
&&
!
editor
.
isReadonly
()
)
{
if
(
editor
.
isDirty
())
{
saveableEditors
.
push
({
groupId
:
group
.
id
,
editor
});
}
}
...
...
@@ -352,7 +347,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({
primary
:
KeyMod
.
CtrlCmd
|
KeyCode
.
KEY_S
,
id
:
SAVE_FILE_COMMAND_ID
,
handler
:
accessor
=>
{
return
saveSelectedEditors
(
accessor
,
{
reason
:
SaveReason
.
EXPLICIT
,
force
:
true
});
return
saveSelectedEditors
(
accessor
,
{
reason
:
SaveReason
.
EXPLICIT
,
force
:
true
/* force save even when non-dirty */
});
}
});
...
...
@@ -363,7 +358,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({
win
:
{
primary
:
KeyChord
(
KeyMod
.
CtrlCmd
|
KeyCode
.
KEY_K
,
KeyMod
.
CtrlCmd
|
KeyMod
.
Shift
|
KeyCode
.
KEY_S
)
},
id
:
SAVE_FILE_WITHOUT_FORMATTING_COMMAND_ID
,
handler
:
accessor
=>
{
return
saveSelectedEditors
(
accessor
,
{
reason
:
SaveReason
.
EXPLICIT
,
force
:
true
,
skipSaveParticipants
:
true
});
return
saveSelectedEditors
(
accessor
,
{
reason
:
SaveReason
.
EXPLICIT
,
force
:
true
/* force save even when non-dirty */
,
skipSaveParticipants
:
true
});
}
});
...
...
@@ -380,7 +375,7 @@ KeybindingsRegistry.registerCommandAndKeybindingRule({
CommandsRegistry
.
registerCommand
({
id
:
SAVE_ALL_COMMAND_ID
,
handler
:
(
accessor
)
=>
{
return
saveEditorsOfGroups
(
accessor
,
accessor
.
get
(
IEditorGroupsService
).
getGroups
(
GroupsOrder
.
MOST_RECENTLY_ACTIVE
),
{
reason
:
SaveReason
.
EXPLICIT
});
return
save
Dirty
EditorsOfGroups
(
accessor
,
accessor
.
get
(
IEditorGroupsService
).
getGroups
(
GroupsOrder
.
MOST_RECENTLY_ACTIVE
),
{
reason
:
SaveReason
.
EXPLICIT
});
}
});
...
...
@@ -398,7 +393,7 @@ CommandsRegistry.registerCommand({
groups
=
coalesce
(
contexts
.
map
(
context
=>
editorGroupService
.
getGroup
(
context
.
groupId
)));
}
return
saveEditorsOfGroups
(
accessor
,
groups
,
{
reason
:
SaveReason
.
EXPLICIT
});
return
save
Dirty
EditorsOfGroups
(
accessor
,
groups
,
{
reason
:
SaveReason
.
EXPLICIT
});
}
});
...
...
src/vs/workbench/services/editor/browser/editorService.ts
浏览文件 @
8efa538d
...
...
@@ -712,21 +712,21 @@ export class EditorService extends Disposable implements EditorServiceImpl {
}
saveAll
(
options
?:
ISaveAllEditorsOptions
):
Promise
<
boolean
>
{
return
this
.
save
(
this
.
get
Saveable
Editors
(
!!
options
?.
includeUntitled
),
options
);
return
this
.
save
(
this
.
get
AllDirty
Editors
(
!!
options
?.
includeUntitled
),
options
);
}
async
revertAll
(
options
?:
IRevertOptions
):
Promise
<
boolean
>
{
const
result
=
await
Promise
.
all
(
this
.
get
Saveable
Editors
(
true
/* include untitled */
).
map
(
async
({
editor
})
=>
editor
.
revert
(
options
)));
const
result
=
await
Promise
.
all
(
this
.
get
AllDirty
Editors
(
true
/* include untitled */
).
map
(
async
({
editor
})
=>
editor
.
revert
(
options
)));
return
result
.
every
(
success
=>
!!
success
);
}
private
get
Saveable
Editors
(
includeUntitled
:
boolean
):
IEditorIdentifier
[]
{
private
get
AllDirty
Editors
(
includeUntitled
:
boolean
):
IEditorIdentifier
[]
{
const
editors
:
IEditorIdentifier
[]
=
[];
for
(
const
group
of
this
.
editorGroupService
.
getGroups
(
GroupsOrder
.
MOST_RECENTLY_ACTIVE
))
{
for
(
const
editor
of
group
.
getEditors
(
EditorsOrder
.
MOST_RECENTLY_ACTIVE
))
{
if
(
editor
.
isDirty
()
&&
!
editor
.
isReadonly
()
&&
(
!
editor
.
isUntitled
()
||
includeUntitled
))
{
if
(
editor
.
isDirty
()
&&
(
!
editor
.
isUntitled
()
||
includeUntitled
))
{
editors
.
push
({
groupId
:
group
.
id
,
editor
});
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录