Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
0af1d56c
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,发现更多精彩内容 >>
提交
0af1d56c
编写于
3月 20, 2018
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use offical TS API for folding
Fixes #45950
上级
aee00a20
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
9 addition
and
30 deletion
+9
-30
extensions/typescript/src/features/folderingProvider.ts
extensions/typescript/src/features/folderingProvider.ts
+8
-29
extensions/typescript/src/typescriptService.ts
extensions/typescript/src/typescriptService.ts
+1
-1
未找到文件。
extensions/typescript/src/features/folderingProvider.ts
浏览文件 @
0af1d56c
...
...
@@ -6,28 +6,9 @@
import
*
as
vscode
from
'
vscode
'
;
import
*
as
Proto
from
'
../protocol
'
;
import
*
as
typeConverters
from
'
../utils/typeConverters
'
;
import
{
ITypeScriptServiceClient
}
from
'
../typescriptService
'
;
// TODO: forward declarations for private TS API.
interface
TextSpan
{
start
:
number
;
length
:
number
;
}
interface
OutliningSpan
{
textSpan
:
TextSpan
;
hintSpan
:
TextSpan
;
bannerText
:
string
;
autoCollapse
:
boolean
;
}
interface
OutliningSpansRequestArgs
extends
Proto
.
FileRequestArgs
{
}
interface
OutliningSpansResponse
extends
Proto
.
Response
{
body
?:
OutliningSpan
[];
}
export
default
class
TypeScriptFoldingProvider
implements
vscode
.
FoldingProvider
{
public
constructor
(
private
readonly
client
:
ITypeScriptServiceClient
...
...
@@ -35,10 +16,10 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider
async
provideFoldingRanges
(
document
:
vscode
.
TextDocument
,
_
:
vscode
.
FoldingContext
,
_
context
:
vscode
.
FoldingContext
,
token
:
vscode
.
CancellationToken
):
Promise
<
vscode
.
FoldingRangeList
|
undefined
>
{
if
(
!
this
.
client
.
apiVersion
.
has2
7
0Features
())
{
if
(
!
this
.
client
.
apiVersion
.
has2
8
0Features
())
{
return
;
}
...
...
@@ -47,17 +28,15 @@ export default class TypeScriptFoldingProvider implements vscode.FoldingProvider
return
;
}
const
args
:
OutliningSpans
RequestArgs
=
{
file
};
const
response
:
OutliningSpansResponse
=
await
this
.
client
.
execute
(
'
o
utliningSpans
'
,
args
,
token
);
const
args
:
Proto
.
File
RequestArgs
=
{
file
};
const
response
:
Proto
.
OutliningSpansResponse
=
await
this
.
client
.
execute
(
'
getO
utliningSpans
'
,
args
,
token
);
if
(
!
response
||
!
response
.
body
)
{
return
;
}
return
new
vscode
.
FoldingRangeList
(
response
.
body
.
map
(
span
=>
{
const
start
=
document
.
positionAt
(
span
.
textSpan
.
start
);
const
end
=
document
.
positionAt
(
span
.
textSpan
.
start
+
span
.
textSpan
.
length
);
return
new
vscode
.
FoldingRange
(
start
.
line
,
end
.
line
);
const
range
=
typeConverters
.
Range
.
fromTextSpan
(
span
.
textSpan
);
return
new
vscode
.
FoldingRange
(
range
.
start
.
line
,
range
.
end
.
line
);
}));
}
}
\ No newline at end of file
}
extensions/typescript/src/typescriptService.ts
浏览文件 @
0af1d56c
...
...
@@ -3,7 +3,6 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import
{
CancellationToken
,
Uri
,
Event
}
from
'
vscode
'
;
import
*
as
Proto
from
'
./protocol
'
;
import
API
from
'
./utils/api
'
;
...
...
@@ -59,5 +58,6 @@ export interface ITypeScriptServiceClient {
execute
(
command
:
'
getEditsForRefactor
'
,
args
:
Proto
.
GetEditsForRefactorRequestArgs
,
token
?:
CancellationToken
):
Promise
<
Proto
.
GetEditsForRefactorResponse
>
;
execute
(
command
:
'
applyCodeActionCommand
'
,
args
:
Proto
.
ApplyCodeActionCommandRequestArgs
,
token
?:
CancellationToken
):
Promise
<
Proto
.
ApplyCodeActionCommandResponse
>
;
execute
(
command
:
'
organizeImports
'
,
args
:
Proto
.
OrganizeImportsRequestArgs
,
token
?:
CancellationToken
):
Promise
<
Proto
.
OrganizeImportsResponse
>
;
execute
(
command
:
'
getOutliningSpans
'
,
args
:
Proto
.
FileRequestArgs
,
token
:
CancellationToken
):
Promise
<
Proto
.
OutliningSpansResponse
>
;
execute
(
command
:
string
,
args
:
any
,
expectedResult
:
boolean
|
CancellationToken
,
token
?:
CancellationToken
):
Promise
<
any
>
;
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录