Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
92f6d221
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,发现更多精彩内容 >>
提交
92f6d221
编写于
11月 14, 2019
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
editors - log errors when restoring editors
上级
6245d671
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
59 addition
and
47 deletion
+59
-47
src/vs/workbench/browser/parts/editor/editorGroupView.ts
src/vs/workbench/browser/parts/editor/editorGroupView.ts
+59
-47
未找到文件。
src/vs/workbench/browser/parts/editor/editorGroupView.ts
浏览文件 @
92f6d221
...
...
@@ -51,6 +51,7 @@ import { extname } from 'vs/base/common/resources';
import
{
Schemas
}
from
'
vs/base/common/network
'
;
import
{
EditorActivation
,
EditorOpenContext
}
from
'
vs/platform/editor/common/editor
'
;
import
{
IDialogService
,
IFileDialogService
,
ConfirmResult
}
from
'
vs/platform/dialogs/common/dialogs
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
export
class
EditorGroupView
extends
Themable
implements
IEditorGroupView
{
...
...
@@ -132,7 +133,8 @@ export class EditorGroupView extends Themable implements IEditorGroupView {
@
IKeybindingService
private
readonly
keybindingService
:
IKeybindingService
,
@
IMenuService
private
readonly
menuService
:
IMenuService
,
@
IContextMenuService
private
readonly
contextMenuService
:
IContextMenuService
,
@
IFileDialogService
private
readonly
fileDialogService
:
IFileDialogService
@
IFileDialogService
private
readonly
fileDialogService
:
IFileDialogService
,
@
ILogService
private
readonly
logService
:
ILogService
)
{
super
(
themeService
);
...
...
@@ -921,64 +923,74 @@ export class EditorGroupView extends Themable implements IEditorGroupView {
private
async
doHandleOpenEditorError
(
error
:
Error
,
editor
:
EditorInput
,
options
?:
EditorOptions
):
Promise
<
void
>
{
// Report error only if this was not us restoring previous error state or
// we are told to ignore errors that occur from opening an editor
if
(
this
.
isRestored
&&
!
isPromiseCanceledError
(
error
)
&&
(
!
options
||
!
options
.
ignoreError
))
{
// Report error only if we are not told to ignore errors that occur from opening an editor
if
(
!
isPromiseCanceledError
(
error
)
&&
(
!
options
||
!
options
.
ignoreError
))
{
// Extract possible error actions from the error
let
errorActions
:
ReadonlyArray
<
IAction
>
|
undefined
=
undefined
;
if
(
isErrorWithActions
(
error
))
{
errorActions
=
(
error
as
IErrorWithActions
).
actions
;
}
// Since it is more likely that errors fail to open when restoring them e.g.
// because files got deleted or moved meanwhile, we do not show any notifications
// if we are still restoring editors.
if
(
this
.
isRestored
)
{
// If the context is USER, we try to show a modal dialog instead of a background notification
if
(
options
?.
context
===
EditorOpenContext
.
USER
)
{
const
buttons
:
string
[]
=
[];
if
(
Array
.
isArray
(
errorActions
)
&&
errorActions
.
length
>
0
)
{
errorActions
.
forEach
(
action
=>
buttons
.
push
(
action
.
label
));
}
else
{
buttons
.
push
(
localize
(
'
ok
'
,
'
OK
'
));
// Extract possible error actions from the error
let
errorActions
:
ReadonlyArray
<
IAction
>
|
undefined
=
undefined
;
if
(
isErrorWithActions
(
error
))
{
errorActions
=
(
error
as
IErrorWithActions
).
actions
;
}
let
cancelId
:
number
|
undefined
=
undefined
;
if
(
buttons
.
length
===
1
)
{
buttons
.
push
(
localize
(
'
cancel
'
,
"
Cancel
"
));
cancelId
=
1
;
}
// If the context is USER, we try to show a modal dialog instead of a background notification
if
(
options
?.
context
===
EditorOpenContext
.
USER
)
{
const
buttons
:
string
[]
=
[];
if
(
Array
.
isArray
(
errorActions
)
&&
errorActions
.
length
>
0
)
{
errorActions
.
forEach
(
action
=>
buttons
.
push
(
action
.
label
));
}
else
{
buttons
.
push
(
localize
(
'
ok
'
,
'
OK
'
));
}
const
result
=
await
this
.
dialogService
.
show
(
Severity
.
Error
,
localize
(
'
editorOpenErrorDialog
'
,
"
Unable to open '{0}'
"
,
editor
.
getName
()),
buttons
,
{
detail
:
toErrorMessage
(
error
),
cancelId
let
cancelId
:
number
|
undefined
=
undefined
;
if
(
buttons
.
length
===
1
)
{
buttons
.
push
(
localize
(
'
cancel
'
,
"
Cancel
"
));
cancelId
=
1
;
}
);
// Make sure to run any error action if present
if
(
result
.
choice
!==
cancelId
&&
Array
.
isArray
(
errorActions
))
{
const
errorAction
=
errorActions
[
result
.
choice
];
if
(
errorAction
)
{
errorAction
.
run
();
const
result
=
await
this
.
dialogService
.
show
(
Severity
.
Error
,
localize
(
'
editorOpenErrorDialog
'
,
"
Unable to open '{0}'
"
,
editor
.
getName
()),
buttons
,
{
detail
:
toErrorMessage
(
error
),
cancelId
}
);
// Make sure to run any error action if present
if
(
result
.
choice
!==
cancelId
&&
Array
.
isArray
(
errorActions
))
{
const
errorAction
=
errorActions
[
result
.
choice
];
if
(
errorAction
)
{
errorAction
.
run
();
}
}
}
}
// Otherwise, show a background notification.
else
{
const
actions
:
INotificationActions
=
{
primary
:
[]
};
if
(
Array
.
isArray
(
errorActions
))
{
actions
.
primary
=
errorActions
;
}
// Otherwise, show a background notification.
else
{
const
actions
:
INotificationActions
=
{
primary
:
[]
};
if
(
Array
.
isArray
(
errorActions
))
{
actions
.
primary
=
errorActions
;
}
const
handle
=
this
.
notificationService
.
notify
({
severity
:
Severity
.
Error
,
message
:
localize
(
'
editorOpenError
'
,
"
Unable to open '{0}': {1}.
"
,
editor
.
getName
(),
toErrorMessage
(
error
)),
actions
});
const
handle
=
this
.
notificationService
.
notify
({
severity
:
Severity
.
Error
,
message
:
localize
(
'
editorOpenError
'
,
"
Unable to open '{0}': {1}.
"
,
editor
.
getName
(),
toErrorMessage
(
error
)),
actions
});
Event
.
once
(
handle
.
onDidClose
)(()
=>
actions
.
primary
&&
dispose
(
actions
.
primary
));
}
}
Event
.
once
(
handle
.
onDidClose
)(()
=>
actions
.
primary
&&
dispose
(
actions
.
primary
));
// Restoring: just log errors to console
else
{
this
.
logService
.
error
(
error
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录