Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
7a6d2cad
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,发现更多精彩内容 >>
提交
7a6d2cad
编写于
9月 08, 2020
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
💄
some code lens polish
上级
82aa8fc4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
45 addition
and
42 deletion
+45
-42
src/vs/editor/contrib/codelens/codelens.ts
src/vs/editor/contrib/codelens/codelens.ts
+31
-28
src/vs/editor/contrib/codelens/codelensController.ts
src/vs/editor/contrib/codelens/codelensController.ts
+10
-10
src/vs/workbench/test/browser/api/extHostLanguageFeatures.test.ts
...orkbench/test/browser/api/extHostLanguageFeatures.test.ts
+4
-4
未找到文件。
src/vs/editor/contrib/codelens/codelens.ts
浏览文件 @
7a6d2cad
...
...
@@ -36,44 +36,47 @@ export class CodeLensModel {
}
}
export
function
getCodeLensData
(
model
:
ITextModel
,
token
:
CancellationToken
):
Promise
<
CodeLensModel
>
{
export
async
function
getCodeLensModel
(
model
:
ITextModel
,
token
:
CancellationToken
):
Promise
<
CodeLensModel
>
{
const
provider
=
CodeLensProviderRegistry
.
ordered
(
model
);
const
providerRanks
=
new
Map
<
CodeLensProvider
,
number
>
();
const
result
=
new
CodeLensModel
();
const
promises
=
provider
.
map
((
provider
,
i
)
=>
{
const
promises
=
provider
.
map
(
async
(
provider
,
i
)
=>
{
providerRanks
.
set
(
provider
,
i
);
return
Promise
.
resolve
(
provider
.
provideCodeLenses
(
model
,
token
))
.
then
(
list
=>
list
&&
result
.
add
(
list
,
provider
))
.
catch
(
onUnexpectedExternalError
);
});
return
Promise
.
all
(
promises
).
then
(()
=>
{
result
.
lenses
=
mergeSort
(
result
.
lenses
,
(
a
,
b
)
=>
{
// sort by lineNumber, provider-rank, and column
if
(
a
.
symbol
.
range
.
startLineNumber
<
b
.
symbol
.
range
.
startLineNumber
)
{
return
-
1
;
}
else
if
(
a
.
symbol
.
range
.
startLineNumber
>
b
.
symbol
.
range
.
startLineNumber
)
{
return
1
;
}
else
if
(
providerRanks
.
get
(
a
.
provider
)
!
<
providerRanks
.
get
(
b
.
provider
)
!
)
{
return
-
1
;
}
else
if
(
providerRanks
.
get
(
a
.
provider
)
!
>
providerRanks
.
get
(
b
.
provider
)
!
)
{
return
1
;
}
else
if
(
a
.
symbol
.
range
.
startColumn
<
b
.
symbol
.
range
.
startColumn
)
{
return
-
1
;
}
else
if
(
a
.
symbol
.
range
.
startColumn
>
b
.
symbol
.
range
.
startColumn
)
{
return
1
;
}
else
{
return
0
;
try
{
const
list
=
await
Promise
.
resolve
(
provider
.
provideCodeLenses
(
model
,
token
));
if
(
list
)
{
result
.
add
(
list
,
provider
);
}
});
}
catch
(
err
)
{
onUnexpectedExternalError
(
err
);
}
});
return
result
;
await
Promise
.
all
(
promises
);
result
.
lenses
=
mergeSort
(
result
.
lenses
,
(
a
,
b
)
=>
{
// sort by lineNumber, provider-rank, and column
if
(
a
.
symbol
.
range
.
startLineNumber
<
b
.
symbol
.
range
.
startLineNumber
)
{
return
-
1
;
}
else
if
(
a
.
symbol
.
range
.
startLineNumber
>
b
.
symbol
.
range
.
startLineNumber
)
{
return
1
;
}
else
if
((
providerRanks
.
get
(
a
.
provider
)
!
)
<
(
providerRanks
.
get
(
b
.
provider
)
!
))
{
return
-
1
;
}
else
if
((
providerRanks
.
get
(
a
.
provider
)
!
)
>
(
providerRanks
.
get
(
b
.
provider
)
!
))
{
return
1
;
}
else
if
(
a
.
symbol
.
range
.
startColumn
<
b
.
symbol
.
range
.
startColumn
)
{
return
-
1
;
}
else
if
(
a
.
symbol
.
range
.
startColumn
>
b
.
symbol
.
range
.
startColumn
)
{
return
1
;
}
else
{
return
0
;
}
});
return
result
;
}
registerLanguageCommand
(
'
_executeCodeLensProvider
'
,
function
(
accessor
,
args
)
{
...
...
@@ -90,7 +93,7 @@ registerLanguageCommand('_executeCodeLensProvider', function (accessor, args) {
const
result
:
CodeLens
[]
=
[];
const
disposables
=
new
DisposableStore
();
return
getCodeLens
Data
(
model
,
CancellationToken
.
None
).
then
(
value
=>
{
return
getCodeLens
Model
(
model
,
CancellationToken
.
None
).
then
(
value
=>
{
disposables
.
add
(
value
);
let
resolve
:
Promise
<
any
>
[]
=
[];
...
...
src/vs/editor/contrib/codelens/codelensController.ts
浏览文件 @
7a6d2cad
...
...
@@ -12,7 +12,7 @@ import { registerEditorContribution, ServicesAccessor, registerEditorAction, Edi
import
{
IEditorContribution
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IModelDecorationsChangeAccessor
}
from
'
vs/editor/common/model
'
;
import
{
CodeLensProviderRegistry
,
CodeLens
,
Command
}
from
'
vs/editor/common/modes
'
;
import
{
CodeLensModel
,
getCodeLens
Data
,
CodeLensItem
}
from
'
vs/editor/contrib/codelens/codelens
'
;
import
{
CodeLensModel
,
getCodeLens
Model
,
CodeLensItem
}
from
'
vs/editor/contrib/codelens/codelens
'
;
import
{
CodeLensWidget
,
CodeLensHelper
}
from
'
vs/editor/contrib/codelens/codelensWidget
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
...
...
@@ -35,7 +35,7 @@ export class CodeLensContribution implements IEditorContribution {
private
readonly
_styleElement
:
HTMLStyleElement
;
private
readonly
_styleClassName
:
string
;
private
_lenses
:
CodeLensWidget
[]
=
[];
private
_current
FindCodeLensSymbolsPromise
:
CancelablePromise
<
CodeLensModel
>
|
undefined
;
private
_current
GetCodeLensModel
:
CancelablePromise
<
CodeLensModel
>
|
undefined
;
private
_oldCodeLensModels
=
new
DisposableStore
();
private
_currentCodeLensModel
:
CodeLensModel
|
undefined
;
private
_modelChangeCounter
:
number
=
0
;
...
...
@@ -80,7 +80,7 @@ export class CodeLensContribution implements IEditorContribution {
this
.
_localDispose
();
this
.
_globalToDispose
.
dispose
();
this
.
_oldCodeLensModels
.
dispose
();
dispose
(
this
.
_currentCodeLensModel
);
this
.
_currentCodeLensModel
?.
dispose
(
);
}
private
_updateLensStyle
():
void
{
...
...
@@ -99,9 +99,9 @@ export class CodeLensContribution implements IEditorContribution {
}
private
_localDispose
():
void
{
if
(
this
.
_current
FindCodeLensSymbolsPromise
)
{
this
.
_current
FindCodeLensSymbolsPromise
.
cancel
();
this
.
_current
FindCodeLensSymbolsPromise
=
undefined
;
if
(
this
.
_current
GetCodeLensModel
)
{
this
.
_current
GetCodeLensModel
.
cancel
();
this
.
_current
GetCodeLensModel
=
undefined
;
this
.
_modelChangeCounter
++
;
}
if
(
this
.
_currentResolveCodeLensSymbolsPromise
)
{
...
...
@@ -157,13 +157,13 @@ export class CodeLensContribution implements IEditorContribution {
const
scheduler
=
new
RunOnceScheduler
(()
=>
{
const
counterValue
=
++
this
.
_modelChangeCounter
;
if
(
this
.
_current
FindCodeLensSymbolsPromise
)
{
this
.
_current
FindCodeLensSymbolsPromise
.
cancel
();
if
(
this
.
_current
GetCodeLensModel
)
{
this
.
_current
GetCodeLensModel
.
cancel
();
}
this
.
_current
FindCodeLensSymbolsPromise
=
createCancelablePromise
(
token
=>
getCodeLensData
(
model
,
token
));
this
.
_current
GetCodeLensModel
=
createCancelablePromise
(
token
=>
getCodeLensModel
(
model
,
token
));
this
.
_current
FindCodeLensSymbolsPromise
.
then
(
result
=>
{
this
.
_current
GetCodeLensModel
.
then
(
result
=>
{
if
(
counterValue
===
this
.
_modelChangeCounter
)
{
// only the last one wins
if
(
this
.
_currentCodeLensModel
)
{
this
.
_oldCodeLensModels
.
add
(
this
.
_currentCodeLensModel
);
...
...
src/vs/workbench/test/browser/api/extHostLanguageFeatures.test.ts
浏览文件 @
7a6d2cad
...
...
@@ -22,7 +22,7 @@ import { ExtHostDocuments } from 'vs/workbench/api/common/extHostDocuments';
import
{
ExtHostDocumentsAndEditors
}
from
'
vs/workbench/api/common/extHostDocumentsAndEditors
'
;
import
{
getDocumentSymbols
}
from
'
vs/editor/contrib/gotoSymbol/documentSymbols
'
;
import
*
as
modes
from
'
vs/editor/common/modes
'
;
import
{
getCodeLens
Data
}
from
'
vs/editor/contrib/codelens/codelens
'
;
import
{
getCodeLens
Model
}
from
'
vs/editor/contrib/codelens/codelens
'
;
import
{
getDefinitionsAtPosition
,
getImplementationsAtPosition
,
getTypeDefinitionsAtPosition
,
getDeclarationsAtPosition
,
getReferencesAtPosition
}
from
'
vs/editor/contrib/gotoSymbol/goToSymbol
'
;
import
{
getHover
}
from
'
vs/editor/contrib/hover/getHover
'
;
import
{
getOccurrencesAtPosition
}
from
'
vs/editor/contrib/wordHighlighter/wordHighlighter
'
;
...
...
@@ -189,7 +189,7 @@ suite('ExtHostLanguageFeatures', function () {
}));
await
rpcProtocol
.
sync
();
const
value
=
await
getCodeLens
Data
(
model
,
CancellationToken
.
None
);
const
value
=
await
getCodeLens
Model
(
model
,
CancellationToken
.
None
);
assert
.
equal
(
value
.
lenses
.
length
,
1
);
});
...
...
@@ -207,7 +207,7 @@ suite('ExtHostLanguageFeatures', function () {
}));
await
rpcProtocol
.
sync
();
const
value
=
await
getCodeLens
Data
(
model
,
CancellationToken
.
None
);
const
value
=
await
getCodeLens
Model
(
model
,
CancellationToken
.
None
);
assert
.
equal
(
value
.
lenses
.
length
,
1
);
const
[
data
]
=
value
.
lenses
;
const
symbol
=
await
Promise
.
resolve
(
data
.
provider
.
resolveCodeLens
!
(
model
,
data
.
symbol
,
CancellationToken
.
None
));
...
...
@@ -224,7 +224,7 @@ suite('ExtHostLanguageFeatures', function () {
}));
await
rpcProtocol
.
sync
();
const
value
=
await
getCodeLens
Data
(
model
,
CancellationToken
.
None
);
const
value
=
await
getCodeLens
Model
(
model
,
CancellationToken
.
None
);
assert
.
equal
(
value
.
lenses
.
length
,
1
);
let
[
data
]
=
value
.
lenses
;
const
symbol
=
await
Promise
.
resolve
(
data
.
provider
.
resolveCodeLens
!
(
model
,
data
.
symbol
,
CancellationToken
.
None
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录