Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
432487e1
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,发现更多精彩内容 >>
提交
432487e1
编写于
7月 24, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better choice handling, #17545
上级
eddd1f09
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
31 addition
and
6 deletion
+31
-6
src/vs/editor/contrib/snippet/browser/snippetController2.ts
src/vs/editor/contrib/snippet/browser/snippetController2.ts
+31
-6
未找到文件。
src/vs/editor/contrib/snippet/browser/snippetController2.ts
浏览文件 @
432487e1
...
...
@@ -14,6 +14,8 @@ import { EditorContextKeys } from 'vs/editor/common/editorContextKeys';
import
{
KeyCode
,
KeyMod
}
from
'
vs/base/common/keyCodes
'
;
import
{
showSimpleSuggestions
}
from
'
vs/editor/contrib/suggest/browser/suggest
'
;
import
{
ISuggestion
}
from
'
vs/editor/common/modes
'
;
import
{
Selection
}
from
'
vs/editor/common/core/selection
'
;
import
{
Choice
}
from
'
vs/editor/contrib/snippet/browser/snippetParser
'
;
@
commonEditorContribution
export
class
SnippetController2
{
...
...
@@ -33,6 +35,7 @@ export class SnippetController2 {
private
_session
:
SnippetSession
;
private
_snippetListener
:
IDisposable
[]
=
[];
private
_modelVersionId
:
number
;
private
_currentChoice
:
Choice
;
constructor
(
private
readonly
_editor
:
ICommonCodeEditor
,
...
...
@@ -113,17 +116,39 @@ export class SnippetController2 {
this
.
_hasPrevTabstop
.
set
(
!
this
.
_session
.
isAtFirstPlaceholder
);
this
.
_hasNextTabstop
.
set
(
!
this
.
_session
.
isAtLastPlaceholder
);
this
.
_handleChoice
();
}
private
_handleChoice
():
void
{
const
{
choice
}
=
this
.
_session
;
if
(
choice
)
{
const
suggestions
=
choice
.
options
.
map
((
option
,
i
)
=>
{
if
(
!
choice
)
{
this
.
_currentChoice
=
undefined
;
return
;
}
if
(
this
.
_currentChoice
!==
choice
)
{
this
.
_currentChoice
=
choice
;
this
.
_editor
.
setSelections
(
this
.
_editor
.
getSelections
()
.
map
(
s
=>
Selection
.
fromPositions
(
s
.
getStartPosition
()))
);
const
[
first
]
=
choice
.
options
;
showSimpleSuggestions
(
this
.
_editor
,
choice
.
options
.
map
((
option
,
i
)
=>
{
// let before = choice.options.slice(0, i);
// let after = choice.options.slice(i);
return
<
ISuggestion
>
{
type
:
'
value
'
,
label
:
option
.
value
,
insertText
:
option
.
value
,
type
:
'
value
'
,
sortText
:
String
(
i
)
// insertText: `\${1|${after.concat(before).join(',')}|}$0`,
// snippetType: 'textmate',
sortText
:
String
(
i
),
overwriteAfter
:
first
.
value
.
length
};
});
showSimpleSuggestions
(
this
.
_editor
,
suggestions
);
}));
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录