Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
170077d5
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,发现更多精彩内容 >>
提交
170077d5
编写于
11月 05, 2018
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adding command that is fired when a js/ts completion is accepted
上级
fec1775a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
37 addition
and
4 deletion
+37
-4
extensions/typescript-language-features/src/features/completions.ts
.../typescript-language-features/src/features/completions.ts
+37
-4
未找到文件。
extensions/typescript-language-features/src/features/completions.ts
浏览文件 @
170077d5
...
...
@@ -191,6 +191,19 @@ class MyCompletionItem extends vscode.CompletionItem {
}
}
class
CompositeCommand
implements
Command
{
public
static
readonly
ID
=
'
_typescript.composite
'
;
public
readonly
id
=
CompositeCommand
.
ID
;
public
execute
(...
commands
:
vscode
.
Command
[])
{
for
(
const
command
of
commands
)
{
vscode
.
commands
.
executeCommand
(
command
.
command
,
...(
command
.
arguments
||
[]));
}
}
}
const
completionAcceptedCommandId
=
'
_typescript.onCompletionAccepted
'
;
class
ApplyCompletionCodeActionCommand
implements
Command
{
public
static
readonly
ID
=
'
_typescript.applyCompletionCodeAction
'
;
public
readonly
id
=
ApplyCompletionCodeActionCommand
.
ID
;
...
...
@@ -273,6 +286,7 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
commandManager
:
CommandManager
)
{
commandManager
.
register
(
new
ApplyCompletionCodeActionCommand
(
this
.
client
));
commandManager
.
register
(
new
CompositeCommand
());
}
public
async
provideCompletionItems
(
...
...
@@ -387,15 +401,34 @@ class TypeScriptCompletionItemProvider implements vscode.CompletionItemProvider
item
.
detail
=
detail
.
displayParts
.
length
?
Previewer
.
plain
(
detail
.
displayParts
)
:
undefined
;
item
.
documentation
=
this
.
getDocumentation
(
detail
,
item
);
const
{
command
,
additionalTextEdits
}
=
this
.
getCodeActions
(
detail
,
filepath
);
item
.
command
=
command
;
item
.
additionalTextEdits
=
additionalTextEdits
;
const
codeAction
=
this
.
getCodeActions
(
detail
,
filepath
);
const
commands
:
vscode
.
Command
[]
=
[{
command
:
completionAcceptedCommandId
,
title
:
''
,
arguments
:
[
item
]
}];
if
(
codeAction
.
command
)
{
commands
.
push
(
codeAction
.
command
);
}
item
.
additionalTextEdits
=
codeAction
.
additionalTextEdits
;
if
(
detail
&&
item
.
useCodeSnippet
)
{
const
shouldCompleteFunction
=
await
this
.
isValidFunctionCompletionContext
(
filepath
,
item
.
position
,
token
);
if
(
shouldCompleteFunction
)
{
item
.
insertText
=
this
.
snippetForFunctionCall
(
item
,
detail
);
item
.
command
=
{
title
:
'
triggerParameterHints
'
,
command
:
'
editor.action.triggerParameterHints
'
};
commands
.
push
({
title
:
'
triggerParameterHints
'
,
command
:
'
editor.action.triggerParameterHints
'
});
}
}
if
(
commands
.
length
)
{
if
(
commands
.
length
===
1
)
{
item
.
command
=
commands
[
0
];
}
else
{
item
.
command
=
{
command
:
CompositeCommand
.
ID
,
title
:
''
,
arguments
:
commands
};
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录