Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
81f8c8bf
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,发现更多精彩内容 >>
提交
81f8c8bf
编写于
6月 25, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
show snippets that start with a trigger character, #37166
上级
80e64972
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
24 addition
and
12 deletion
+24
-12
src/vs/editor/contrib/suggest/suggest.ts
src/vs/editor/contrib/suggest/suggest.ts
+4
-0
src/vs/editor/contrib/suggest/suggestModel.ts
src/vs/editor/contrib/suggest/suggestModel.ts
+2
-1
src/vs/workbench/parts/snippets/electron-browser/snippetsService.ts
...kbench/parts/snippets/electron-browser/snippetsService.ts
+8
-3
src/vs/workbench/parts/snippets/test/electron-browser/snippetsService.test.ts
...ts/snippets/test/electron-browser/snippetsService.test.ts
+10
-8
未找到文件。
src/vs/editor/contrib/suggest/suggest.ts
浏览文件 @
81f8c8bf
...
...
@@ -37,6 +37,10 @@ export type SnippetConfig = 'top' | 'bottom' | 'inline' | 'none';
let
_snippetSuggestSupport
:
ISuggestSupport
;
export
function
getSnippetSuggestSupport
():
ISuggestSupport
{
return
_snippetSuggestSupport
;
}
export
function
setSnippetSuggestSupport
(
support
:
ISuggestSupport
):
ISuggestSupport
{
const
old
=
_snippetSuggestSupport
;
_snippetSuggestSupport
=
support
;
...
...
src/vs/editor/contrib/suggest/suggestModel.ts
浏览文件 @
81f8c8bf
...
...
@@ -18,7 +18,7 @@ import { Selection } from 'vs/editor/common/core/selection';
import
{
ITextModel
,
IWordAtPosition
}
from
'
vs/editor/common/model
'
;
import
{
ISuggestSupport
,
StandardTokenType
,
SuggestContext
,
SuggestRegistry
,
SuggestTriggerKind
}
from
'
vs/editor/common/modes
'
;
import
{
CompletionModel
}
from
'
./completionModel
'
;
import
{
ISuggestionItem
,
getSuggestionComparator
,
provideSuggestionItems
}
from
'
./suggest
'
;
import
{
ISuggestionItem
,
getSuggestionComparator
,
provideSuggestionItems
,
getSnippetSuggestSupport
}
from
'
./suggest
'
;
export
interface
ICancelEvent
{
readonly
retrigger
:
boolean
;
...
...
@@ -180,6 +180,7 @@ export class SuggestModel implements IDisposable {
let
set
=
supportsByTriggerCharacter
[
ch
];
if
(
!
set
)
{
set
=
supportsByTriggerCharacter
[
ch
]
=
new
Set
();
set
.
add
(
getSnippetSuggestSupport
());
}
set
.
add
(
support
);
}
...
...
src/vs/workbench/parts/snippets/electron-browser/snippetsService.ts
浏览文件 @
81f8c8bf
...
...
@@ -6,7 +6,7 @@
import
{
localize
}
from
'
vs/nls
'
;
import
{
ITextModel
}
from
'
vs/editor/common/model
'
;
import
{
ISuggestSupport
,
ISuggestResult
,
ISuggestion
,
LanguageId
,
SuggestionType
,
SnippetType
}
from
'
vs/editor/common/modes
'
;
import
{
ISuggestSupport
,
ISuggestResult
,
ISuggestion
,
LanguageId
,
SuggestionType
,
SnippetType
,
SuggestContext
}
from
'
vs/editor/common/modes
'
;
import
{
registerSingleton
}
from
'
vs/platform/instantiation/common/extensions
'
;
import
{
setSnippetSuggestSupport
}
from
'
vs/editor/contrib/suggest/suggest
'
;
import
{
IModeService
}
from
'
vs/editor/common/services/modeService
'
;
...
...
@@ -321,7 +321,7 @@ export class SnippetSuggestProvider implements ISuggestSupport {
//
}
provideCompletionItems
(
model
:
ITextModel
,
position
:
Position
):
Promise
<
ISuggestResult
>
{
provideCompletionItems
(
model
:
ITextModel
,
position
:
Position
,
context
:
SuggestContext
):
Promise
<
ISuggestResult
>
{
const
languageId
=
this
.
_getLanguageIdAtPosition
(
model
,
position
);
return
this
.
_snippets
.
getSnippets
(
languageId
).
then
(
snippets
=>
{
...
...
@@ -337,7 +337,12 @@ export class SnippetSuggestProvider implements ISuggestSupport {
let
overwriteBefore
=
0
;
let
accetSnippet
=
true
;
if
(
lowWordUntil
.
length
>
0
&&
startsWith
(
lowPrefix
,
lowWordUntil
))
{
if
(
typeof
context
.
triggerCharacter
===
'
string
'
)
{
// cheap match on the trigger-character
overwriteBefore
=
context
.
triggerCharacter
.
length
;
accetSnippet
=
startsWith
(
lowPrefix
,
context
.
triggerCharacter
.
toLowerCase
());
}
else
if
(
lowWordUntil
.
length
>
0
&&
startsWith
(
lowPrefix
,
lowWordUntil
))
{
// cheap match on the (none-empty) current word
overwriteBefore
=
lowWordUntil
.
length
;
accetSnippet
=
true
;
...
...
src/vs/workbench/parts/snippets/test/electron-browser/snippetsService.test.ts
浏览文件 @
81f8c8bf
...
...
@@ -13,6 +13,7 @@ import { ModeServiceImpl } from 'vs/editor/common/services/modeServiceImpl';
import
{
TextModel
}
from
'
vs/editor/common/model/textModel
'
;
import
{
ISnippetsService
}
from
'
vs/workbench/parts/snippets/electron-browser/snippets.contribution
'
;
import
{
Snippet
}
from
'
vs/workbench/parts/snippets/electron-browser/snippetsFile
'
;
import
{
SuggestContext
,
SuggestTriggerKind
}
from
'
vs/editor/common/modes
'
;
class
SimpleSnippetService
implements
ISnippetsService
{
_serviceBrand
:
any
;
...
...
@@ -40,6 +41,7 @@ suite('SnippetsService', function () {
let
modeService
:
ModeServiceImpl
;
let
snippetService
:
ISnippetsService
;
let
suggestContext
:
SuggestContext
=
{
triggerKind
:
SuggestTriggerKind
.
Invoke
};
setup
(
function
()
{
modeService
=
new
ModeServiceImpl
();
...
...
@@ -66,7 +68,7 @@ suite('SnippetsService', function () {
const
provider
=
new
SnippetSuggestProvider
(
modeService
,
snippetService
);
const
model
=
TextModel
.
createFromString
(
''
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
1
)).
then
(
result
=>
{
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
1
)
,
suggestContext
).
then
(
result
=>
{
assert
.
equal
(
result
.
incomplete
,
undefined
);
assert
.
equal
(
result
.
suggestions
.
length
,
2
);
});
...
...
@@ -77,7 +79,7 @@ suite('SnippetsService', function () {
const
provider
=
new
SnippetSuggestProvider
(
modeService
,
snippetService
);
const
model
=
TextModel
.
createFromString
(
'
bar
'
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
4
)).
then
(
result
=>
{
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
4
)
,
suggestContext
).
then
(
result
=>
{
assert
.
equal
(
result
.
incomplete
,
undefined
);
assert
.
equal
(
result
.
suggestions
.
length
,
1
);
assert
.
equal
(
result
.
suggestions
[
0
].
label
,
'
bar
'
);
...
...
@@ -98,18 +100,18 @@ suite('SnippetsService', function () {
const
provider
=
new
SnippetSuggestProvider
(
modeService
,
snippetService
);
let
model
=
TextModel
.
createFromString
(
'
\t
<?php
'
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
7
)).
then
(
result
=>
{
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
7
)
,
suggestContext
).
then
(
result
=>
{
assert
.
equal
(
result
.
suggestions
.
length
,
1
);
model
.
dispose
();
model
=
TextModel
.
createFromString
(
'
\t
<?
'
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
4
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
4
)
,
suggestContext
);
}).
then
(
result
=>
{
assert
.
equal
(
result
.
suggestions
.
length
,
1
);
model
.
dispose
();
model
=
TextModel
.
createFromString
(
'
a<?
'
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
4
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
4
)
,
suggestContext
);
}).
then
(
result
=>
{
assert
.
equal
(
result
.
suggestions
.
length
,
0
);
...
...
@@ -131,9 +133,9 @@ suite('SnippetsService', function () {
const
provider
=
new
SnippetSuggestProvider
(
modeService
,
snippetService
);
let
model
=
TextModel
.
createFromString
(
'
<head>
\n\t\n
>/head>
'
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
1
)).
then
(
result
=>
{
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
1
)
,
suggestContext
).
then
(
result
=>
{
assert
.
equal
(
result
.
suggestions
.
length
,
1
);
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
2
,
2
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
2
,
2
)
,
suggestContext
);
}).
then
(
result
=>
{
assert
.
equal
(
result
.
suggestions
.
length
,
1
);
});
...
...
@@ -161,7 +163,7 @@ suite('SnippetsService', function () {
const
provider
=
new
SnippetSuggestProvider
(
modeService
,
snippetService
);
let
model
=
TextModel
.
createFromString
(
''
,
undefined
,
modeService
.
getLanguageIdentifier
(
'
fooLang
'
));
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
1
)).
then
(
result
=>
{
return
provider
.
provideCompletionItems
(
model
,
new
Position
(
1
,
1
)
,
suggestContext
).
then
(
result
=>
{
assert
.
equal
(
result
.
suggestions
.
length
,
2
);
let
[
first
,
second
]
=
result
.
suggestions
;
assert
.
equal
(
first
.
label
,
'
first
'
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录