Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
0768edf5
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,发现更多精彩内容 >>
提交
0768edf5
编写于
3月 16, 2020
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
quick access - load file symbols after registry is ready (fix #70607)
上级
1ee18550
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
40 addition
and
4 deletion
+40
-4
src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts
src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts
+1
-0
src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts
src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts
+39
-4
未找到文件。
src/vs/editor/contrib/quickAccess/gotoLineQuickAccess.ts
浏览文件 @
0768edf5
...
@@ -20,6 +20,7 @@ export abstract class AbstractGotoLineQuickAccessProvider extends AbstractEditor
...
@@ -20,6 +20,7 @@ export abstract class AbstractGotoLineQuickAccessProvider extends AbstractEditor
protected
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IGotoLineQuickPickItem
>
):
IDisposable
{
protected
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IGotoLineQuickPickItem
>
):
IDisposable
{
const
label
=
localize
(
'
cannotRunGotoLine
'
,
"
Open a text editor first to go to a line.
"
);
const
label
=
localize
(
'
cannotRunGotoLine
'
,
"
Open a text editor first to go to a line.
"
);
picker
.
items
=
[{
label
}];
picker
.
items
=
[{
label
}];
picker
.
ariaLabel
=
label
;
picker
.
ariaLabel
=
label
;
...
...
src/vs/editor/contrib/quickAccess/gotoSymbolQuickAccess.ts
浏览文件 @
0768edf5
...
@@ -31,13 +31,12 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit
...
@@ -31,13 +31,12 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit
static
PREFIX_BY_CATEGORY
=
`
${
AbstractGotoSymbolQuickAccessProvider
.
PREFIX
}${
AbstractGotoSymbolQuickAccessProvider
.
SCOPE_PREFIX
}
`
;
static
PREFIX_BY_CATEGORY
=
`
${
AbstractGotoSymbolQuickAccessProvider
.
PREFIX
}${
AbstractGotoSymbolQuickAccessProvider
.
SCOPE_PREFIX
}
`
;
protected
canProvideWithTextEditor
(
editor
:
IEditor
):
boolean
{
protected
canProvideWithTextEditor
(
editor
:
IEditor
):
boolean
{
const
model
=
this
.
getModel
(
editor
);
return
!!
this
.
getModel
(
editor
);
return
!!
model
&&
DocumentSymbolProviderRegistry
.
has
(
model
);
}
}
protected
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IGotoSymbolQuickPickItem
>
):
IDisposable
{
protected
provideWithoutTextEditor
(
picker
:
IQuickPick
<
IGotoSymbolQuickPickItem
>
):
IDisposable
{
const
label
=
localize
(
'
cannotRunGotoSymbol
'
,
"
Open a text editor with symbol information first to go to a symbol.
"
);
const
label
=
localize
(
'
cannotRunGotoSymbolWithoutEditor
'
,
"
Open a text editor first to go to a symbol.
"
);
picker
.
items
=
[{
label
,
index
:
0
,
kind
:
SymbolKind
.
String
}];
picker
.
items
=
[{
label
,
index
:
0
,
kind
:
SymbolKind
.
String
}];
picker
.
ariaLabel
=
label
;
picker
.
ariaLabel
=
label
;
...
@@ -50,6 +49,42 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit
...
@@ -50,6 +49,42 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit
return
Disposable
.
None
;
return
Disposable
.
None
;
}
}
// Provide symbols from model if available in registry
if
(
DocumentSymbolProviderRegistry
.
has
(
model
))
{
return
this
.
doProvideWithEditorSymbols
(
editor
,
model
,
picker
,
token
);
}
// Otherwise show an entry for a model without registry
// But give a chance to resolve the symbols at a later
// point if possible
return
this
.
doProvideWithoutEditorSymbols
(
editor
,
model
,
picker
,
token
);
}
private
doProvideWithoutEditorSymbols
(
editor
:
IEditor
,
model
:
ITextModel
,
picker
:
IQuickPick
<
IGotoSymbolQuickPickItem
>
,
token
:
CancellationToken
):
IDisposable
{
const
disposables
=
new
DisposableStore
();
// Generic pick for not having any symbol information
const
label
=
localize
(
'
cannotRunGotoSymbolWithoutSymbolProvider
'
,
"
Open a text editor with symbol information first to go to a symbol.
"
);
picker
.
items
=
[{
label
,
index
:
0
,
kind
:
SymbolKind
.
String
}];
picker
.
ariaLabel
=
label
;
// Listen to changes to the registry and see if eventually
// we do get symbols. This can happen if the picker is opened
// very early after the model has loaded but before the
// language registry is ready.
// https://github.com/microsoft/vscode/issues/70607
const
symbolProviderListener
=
disposables
.
add
(
DocumentSymbolProviderRegistry
.
onDidChange
(()
=>
{
if
(
DocumentSymbolProviderRegistry
.
has
(
model
))
{
symbolProviderListener
.
dispose
();
disposables
.
add
(
this
.
doProvideWithEditorSymbols
(
editor
,
model
,
picker
,
token
));
}
}));
return
disposables
;
}
private
doProvideWithEditorSymbols
(
editor
:
IEditor
,
model
:
ITextModel
,
picker
:
IQuickPick
<
IGotoSymbolQuickPickItem
>
,
token
:
CancellationToken
):
IDisposable
{
const
disposables
=
new
DisposableStore
();
const
disposables
=
new
DisposableStore
();
// Goto symbol once picked
// Goto symbol once picked
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录