Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
5b7aa97b
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,发现更多精彩内容 >>
提交
5b7aa97b
编写于
11月 07, 2017
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use command manager for completion item provider
上级
37c3cd11
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
22 addition
and
18 deletion
+22
-18
extensions/typescript/src/features/completionItemProvider.ts
extensions/typescript/src/features/completionItemProvider.ts
+21
-17
extensions/typescript/src/typescriptMain.ts
extensions/typescript/src/typescriptMain.ts
+1
-1
未找到文件。
extensions/typescript/src/features/completionItemProvider.ts
浏览文件 @
5b7aa97b
...
...
@@ -16,7 +16,7 @@ import { tsTextSpanToVsRange, vsPositionToTsFileLocation } from '../utils/conver
import
*
as
nls
from
'
vscode-nls
'
;
import
{
applyCodeAction
}
from
'
../utils/codeAction
'
;
import
*
as
languageModeIds
from
'
../utils/languageModeIds
'
;
import
{
CommandManager
}
from
'
../utils/commandManager
'
;
import
{
CommandManager
,
Command
}
from
'
../utils/commandManager
'
;
let
localize
=
nls
.
loadMessageBundle
();
...
...
@@ -126,6 +126,24 @@ class MyCompletionItem extends CompletionItem {
}
}
class
ApplyCompletionCodeActionCommand
implements
Command
{
public
static
readonly
ID
=
'
_typescript.applyCompletionCodeAction
'
;
public
readonly
id
=
ApplyCompletionCodeActionCommand
.
ID
;
public
constructor
(
private
readonly
client
:
ITypeScriptServiceClient
)
{
}
public
async
execute
(
file
:
string
,
codeActions
:
CodeAction
[]):
Promise
<
boolean
>
{
for
(
const
action
of
codeActions
)
{
if
(
!
(
await
applyCodeAction
(
this
.
client
,
action
,
file
)))
{
return
false
;
}
}
return
true
;
}
}
interface
Configuration
{
useCodeSnippetsOnMethodSuggest
:
boolean
;
nameSuggestions
:
boolean
;
...
...
@@ -142,16 +160,12 @@ namespace Configuration {
}
export
default
class
TypeScriptCompletionItemProvider
implements
CompletionItemProvider
{
private
readonly
commandId
:
string
;
constructor
(
private
client
:
ITypeScriptServiceClient
,
mode
:
string
,
private
readonly
typingsStatus
:
TypingsStatus
,
commandManager
:
CommandManager
)
{
this
.
commandId
=
`_typescript.applyCompletionCodeAction.
${
mode
}
`
;
commandManager
.
registerCommand
(
this
.
commandId
,
this
.
applyCompletionCodeAction
,
this
);
commandManager
.
register
(
new
ApplyCompletionCodeActionCommand
(
this
.
client
));
}
public
async
provideCompletionItems
(
...
...
@@ -313,7 +327,7 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
if
(
detail
.
codeActions
&&
detail
.
codeActions
.
length
)
{
item
.
command
=
{
title
:
''
,
command
:
this
.
commandId
,
command
:
ApplyCompletionCodeActionCommand
.
ID
,
arguments
:
[
filepath
,
detail
.
codeActions
]
};
}
...
...
@@ -380,16 +394,6 @@ export default class TypeScriptCompletionItemProvider implements CompletionItemP
return
new
SnippetString
(
codeSnippet
);
}
private
async
applyCompletionCodeAction
(
file
:
string
,
codeActions
:
CodeAction
[]):
Promise
<
boolean
>
{
for
(
const
action
of
codeActions
)
{
if
(
!
(
await
applyCodeAction
(
this
.
client
,
action
,
file
)))
{
return
false
;
}
}
return
true
;
}
private
getConfiguration
(
resource
:
Uri
):
Configuration
{
// Use shared setting for js and ts
const
typeScriptConfig
=
workspace
.
getConfiguration
(
'
typescript
'
,
resource
);
...
...
extensions/typescript/src/typescriptMain.ts
浏览文件 @
5b7aa97b
...
...
@@ -233,7 +233,7 @@ class LanguageProvider {
const
selector
=
this
.
description
.
modeIds
;
const
config
=
workspace
.
getConfiguration
(
this
.
id
);
const
completionItemProvider
=
new
(
await
import
(
'
./features/completionItemProvider
'
)).
default
(
client
,
this
.
description
.
id
,
this
.
typingsStatus
,
this
.
commandManager
);
const
completionItemProvider
=
new
(
await
import
(
'
./features/completionItemProvider
'
)).
default
(
client
,
this
.
typingsStatus
,
this
.
commandManager
);
this
.
disposables
.
push
(
languages
.
registerCompletionItemProvider
(
selector
,
completionItemProvider
,
'
.
'
,
'
"
'
,
'
\'
'
,
'
/
'
,
'
@
'
));
this
.
disposables
.
push
(
languages
.
registerCompletionItemProvider
(
selector
,
new
(
await
import
(
'
./features/directiveCommentCompletionProvider
'
)).
default
(
client
),
'
@
'
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录