Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
277f25d0
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,发现更多精彩内容 >>
提交
277f25d0
编写于
1月 25, 2017
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix a few undefined ref accesses while ts is loading
上级
bfffabef
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
22 deletion
+20
-22
extensions/typescript/src/features/hoverProvider.ts
extensions/typescript/src/features/hoverProvider.ts
+4
-8
extensions/typescript/src/features/referencesCodeLensProvider.ts
...ons/typescript/src/features/referencesCodeLensProvider.ts
+16
-14
未找到文件。
extensions/typescript/src/features/hoverProvider.ts
浏览文件 @
277f25d0
...
...
@@ -12,18 +12,14 @@ import { ITypescriptServiceClient } from '../typescriptService';
export
default
class
TypeScriptHoverProvider
implements
HoverProvider
{
private
client
:
ITypescriptServiceClient
;
public
constructor
(
client
:
ITypescriptServiceClient
)
{
this
.
client
=
client
;
}
public
constructor
(
private
client
:
ITypescriptServiceClient
)
{
}
public
provideHover
(
document
:
TextDocument
,
position
:
Position
,
token
:
CancellationToken
):
Promise
<
Hover
|
undefined
|
null
>
{
const
filepath
=
this
.
client
.
normalizePath
(
document
.
uri
);
if
(
!
filepath
)
{
return
Promise
.
resolve
(
null
);
}
le
t
args
:
Proto
.
FileLocationRequestArgs
=
{
cons
t
args
:
Proto
.
FileLocationRequestArgs
=
{
file
:
filepath
,
line
:
position
.
line
+
1
,
offset
:
position
.
character
+
1
...
...
@@ -32,8 +28,8 @@ export default class TypeScriptHoverProvider implements HoverProvider {
return
Promise
.
resolve
(
null
);
}
return
this
.
client
.
execute
(
'
quickinfo
'
,
args
,
token
).
then
((
response
):
Hover
|
undefined
=>
{
let
data
=
response
.
body
;
if
(
data
)
{
if
(
response
&&
response
.
body
)
{
const
data
=
response
.
body
;
return
new
Hover
(
[{
language
:
'
typescript
'
,
value
:
data
.
displayString
},
data
.
documentation
],
new
Range
(
data
.
start
.
line
-
1
,
data
.
start
.
offset
-
1
,
data
.
end
.
line
-
1
,
data
.
end
.
offset
-
1
));
...
...
extensions/typescript/src/features/referencesCodeLensProvider.ts
浏览文件 @
277f25d0
...
...
@@ -12,17 +12,16 @@ import * as PConst from '../protocol.const';
import
{
ITypescriptServiceClient
}
from
'
../typescriptService
'
;
import
*
as
nls
from
'
vscode-nls
'
;
le
t
localize
=
nls
.
loadMessageBundle
();
cons
t
localize
=
nls
.
loadMessageBundle
();
class
ReferencesCodeLens
extends
CodeLens
{
public
document
:
Uri
;
public
file
:
string
;
constructor
(
document
:
Uri
,
file
:
string
,
range
:
Range
)
{
constructor
(
public
tsDocument
:
Uri
,
public
tsFile
:
string
,
range
:
Range
)
{
super
(
range
);
this
.
document
=
document
;
this
.
file
=
file
;
}
}
...
...
@@ -31,14 +30,14 @@ export default class TypeScriptReferencesCodeLensProvider implements CodeLensPro
private
onDidChangeCodeLensesEmitter
=
new
EventEmitter
<
CodeLensProvider
>
();
public
constructor
(
private
client
:
ITypescriptServiceClient
)
{
}
public
get
onDidChangeCodeLenses
():
Event
<
CodeLensProvider
>
{
return
this
.
onDidChangeCodeLensesEmitter
.
event
;
}
constructor
(
private
client
:
ITypescriptServiceClient
)
{
}
public
updateConfiguration
(
config
:
WorkspaceConfiguration
):
void
{
le
t
typeScriptConfig
=
workspace
.
getConfiguration
(
'
typescript
'
);
cons
t
typeScriptConfig
=
workspace
.
getConfiguration
(
'
typescript
'
);
const
wasEnabled
=
this
.
enabled
;
this
.
enabled
=
typeScriptConfig
.
get
(
'
referencesCodeLens.enabled
'
,
false
);
if
(
wasEnabled
!==
this
.
enabled
)
{
...
...
@@ -56,22 +55,25 @@ export default class TypeScriptReferencesCodeLensProvider implements CodeLensPro
return
Promise
.
resolve
([]);
}
return
this
.
client
.
execute
(
'
navtree
'
,
{
file
:
filepath
},
token
).
then
(
response
=>
{
if
(
!
response
)
{
return
[];
}
const
tree
=
response
.
body
;
const
referenceableSpans
:
Range
[]
=
[];
if
(
tree
&&
tree
.
childItems
)
{
tree
.
childItems
.
forEach
(
item
=>
this
.
extractReferenceableSymbols
(
document
,
item
,
referenceableSpans
));
}
return
Promise
.
resolve
(
referenceableSpans
.
map
(
span
=>
new
ReferencesCodeLens
(
document
.
uri
,
filepath
,
span
)
));
return
referenceableSpans
.
map
(
span
=>
new
ReferencesCodeLens
(
document
.
uri
,
filepath
,
span
));
});
}
resolveCodeLens
(
inputCodeLens
:
CodeLens
,
token
:
CancellationToken
):
Promise
<
CodeLens
>
{
const
codeLens
=
inputCodeLens
as
ReferencesCodeLens
;
if
(
!
codeLens
.
d
ocument
)
{
if
(
!
codeLens
.
tsD
ocument
)
{
return
Promise
.
reject
<
CodeLens
>
(
codeLens
);
}
const
args
:
Proto
.
FileLocationRequestArgs
=
{
file
:
codeLens
.
f
ile
,
file
:
codeLens
.
tsF
ile
,
line
:
codeLens
.
range
.
start
.
line
+
1
,
offset
:
codeLens
.
range
.
start
.
character
+
1
};
...
...
@@ -90,7 +92,7 @@ export default class TypeScriptReferencesCodeLensProvider implements CodeLensPro
codeLens
.
command
=
{
title
:
locations
.
length
+
'
'
+
(
locations
.
length
===
1
?
localize
(
'
oneReferenceLabel
'
,
'
reference
'
)
:
localize
(
'
manyReferenceLabel
'
,
'
references
'
)),
command
:
'
editor.action.showReferences
'
,
arguments
:
[
codeLens
.
d
ocument
,
codeLens
.
range
.
start
,
locations
]
arguments
:
[
codeLens
.
tsD
ocument
,
codeLens
.
range
.
start
,
locations
]
};
return
Promise
.
resolve
(
codeLens
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录