Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
a2690457
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,发现更多精彩内容 >>
提交
a2690457
编写于
2月 23, 2018
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better scope try catch in `provideCompletionItems`
We only want to swallow exceptions around the request itself
上级
ec3e57e9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
38 addition
and
50 deletion
+38
-50
extensions/typescript/src/features/completionItemProvider.ts
extensions/typescript/src/features/completionItemProvider.ts
+38
-50
未找到文件。
extensions/typescript/src/features/completionItemProvider.ts
浏览文件 @
a2690457
...
...
@@ -263,61 +263,49 @@ export default class TypeScriptCompletionItemProvider implements vscode.Completi
return
[];
}
try
{
const
args
:
Proto
.
CompletionsRequestArgs
=
{
...
vsPositionToTsFileLocation
(
file
,
position
),
includeExternalModuleExports
:
config
.
autoImportSuggestions
,
includeInsertTextCompletions
:
true
};
const
msg
=
await
this
.
client
.
execute
(
'
completions
'
,
args
,
token
);
// This info has to come from the tsserver. See https://github.com/Microsoft/TypeScript/issues/2831
// let isMemberCompletion = false;
// let requestColumn = position.character;
// if (wordAtPosition) {
// requestColumn = wordAtPosition.startColumn;
// }
// if (requestColumn > 0) {
// let value = model.getValueInRange({
// startLineNumber: position.line,
// startColumn: requestColumn - 1,
// endLineNumber: position.line,
// endColumn: requestColumn
// });
// isMemberCompletion = value === '.';
// }
const
completionItems
:
vscode
.
CompletionItem
[]
=
[];
const
body
=
msg
.
body
;
if
(
body
)
{
// Only enable dot completions in TS files for now
let
enableDotCompletions
=
document
&&
(
document
.
languageId
===
languageModeIds
.
typescript
||
document
.
languageId
===
languageModeIds
.
typescriptreact
);
// TODO: Workaround for https://github.com/Microsoft/TypeScript/issues/13456
// Only enable dot completions when previous character is an identifier.
// Prevents incorrectly completing while typing spread operators.
if
(
position
.
character
>
1
)
{
const
preText
=
document
.
getText
(
new
vscode
.
Range
(
position
.
line
,
0
,
position
.
line
,
position
.
character
-
1
));
enableDotCompletions
=
preText
.
match
(
/
[
a-z_$
\)\]\}]\s
*$/ig
)
!==
null
;
}
const
args
:
Proto
.
CompletionsRequestArgs
=
{
...
vsPositionToTsFileLocation
(
file
,
position
),
includeExternalModuleExports
:
config
.
autoImportSuggestions
,
includeInsertTextCompletions
:
true
};
for
(
const
element
of
body
)
{
if
(
element
.
kind
===
PConst
.
Kind
.
warning
&&
!
config
.
nameSuggestions
)
{
continue
;
}
if
(
!
config
.
autoImportSuggestions
&&
element
.
hasAction
)
{
continue
;
}
const
item
=
new
MyCompletionItem
(
position
,
document
,
line
.
text
,
element
,
enableDotCompletions
,
config
.
useCodeSnippetsOnMethodSuggest
);
completionItems
.
push
(
item
);
}
let
msg
:
Proto
.
CompletionEntry
[]
|
undefined
=
undefined
;
try
{
const
response
=
await
this
.
client
.
execute
(
'
completions
'
,
args
,
token
);
msg
=
response
.
body
;
if
(
!
msg
)
{
return
[];
}
return
completionItems
;
}
catch
{
return
[];
}
// Only enable dot completions in TS files for now
let
enableDotCompletions
=
document
&&
(
document
.
languageId
===
languageModeIds
.
typescript
||
document
.
languageId
===
languageModeIds
.
typescriptreact
);
// TODO: Workaround for https://github.com/Microsoft/TypeScript/issues/13456
// Only enable dot completions when previous character is an identifier.
// Prevents incorrectly completing while typing spread operators.
if
(
position
.
character
>
1
)
{
const
preText
=
document
.
getText
(
new
vscode
.
Range
(
position
.
line
,
0
,
position
.
line
,
position
.
character
-
1
));
enableDotCompletions
=
preText
.
match
(
/
[
a-z_$
\)\]\}]\s
*$/ig
)
!==
null
;
}
const
completionItems
:
vscode
.
CompletionItem
[]
=
[];
for
(
const
element
of
msg
)
{
if
(
element
.
kind
===
PConst
.
Kind
.
warning
&&
!
config
.
nameSuggestions
)
{
continue
;
}
if
(
!
config
.
autoImportSuggestions
&&
element
.
hasAction
)
{
continue
;
}
const
item
=
new
MyCompletionItem
(
position
,
document
,
line
.
text
,
element
,
enableDotCompletions
,
config
.
useCodeSnippetsOnMethodSuggest
);
completionItems
.
push
(
item
);
}
return
completionItems
;
}
private
shouldTrigger
(
context
:
vscode
.
CompletionContext
,
config
:
Configuration
,
line
:
vscode
.
TextLine
,
position
:
vscode
.
Position
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录