Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
a2a077b0
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
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,发现更多精彩内容 >>
提交
a2a077b0
编写于
1月 25, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optionally allow to specify selection at which to insert a snippet, #19116
上级
bedb191a
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
38 addition
and
9 deletion
+38
-9
extensions/vscode-api-tests/src/editor.test.ts
extensions/vscode-api-tests/src/editor.test.ts
+19
-1
src/vs/vscode.d.ts
src/vs/vscode.d.ts
+2
-1
src/vs/workbench/api/node/extHost.protocol.ts
src/vs/workbench/api/node/extHost.protocol.ts
+1
-1
src/vs/workbench/api/node/extHostEditors.ts
src/vs/workbench/api/node/extHostEditors.ts
+11
-2
src/vs/workbench/api/node/mainThreadEditors.ts
src/vs/workbench/api/node/mainThreadEditors.ts
+2
-2
src/vs/workbench/api/node/mainThreadEditorsTracker.ts
src/vs/workbench/api/node/mainThreadEditorsTracker.ts
+3
-2
未找到文件。
extensions/vscode-api-tests/src/editor.test.ts
浏览文件 @
a2a077b0
...
...
@@ -49,7 +49,7 @@ suite('editor tests', () => {
});
});
test
(
'
insert snippet with replacement
'
,
()
=>
{
test
(
'
insert snippet with replacement
, editor selection
'
,
()
=>
{
const
snippetString
=
new
SnippetString
()
.
appendText
(
'
has been
'
);
...
...
@@ -67,6 +67,24 @@ suite('editor tests', () => {
});
});
test
(
'
insert snippet with replacement, selection as argument
'
,
()
=>
{
const
snippetString
=
new
SnippetString
()
.
appendText
(
'
has been
'
);
return
withRandomFileEditor
(
'
This will be replaced
'
,
(
editor
,
doc
)
=>
{
const
selection
=
new
Selection
(
new
Position
(
0
,
5
),
new
Position
(
0
,
12
)
);
return
editor
.
insertSnippet
(
snippetString
,
selection
).
then
(
inserted
=>
{
assert
.
ok
(
inserted
);
assert
.
equal
(
doc
.
getText
(),
'
This has been replaced
'
);
assert
.
ok
(
doc
.
isDirty
);
});
});
});
test
(
'
make edit
'
,
()
=>
{
return
withRandomFileEditor
(
''
,
(
editor
,
doc
)
=>
{
return
editor
.
edit
((
builder
)
=>
{
...
...
src/vs/vscode.d.ts
浏览文件 @
a2a077b0
...
...
@@ -946,11 +946,12 @@ declare module 'vscode' {
* or accept the snippet.
*
* @param snippet The snippet to insert in this edit.
* @param selection One or many selections at which to insert the snippets. Defaults to the current editor selection.
* @param options The undo/redo behaviour around this edit. By default, undo stops will be created before and after this edit.
* @return A promise that resolves with a value indicating if the snippet could be inserted. Note that the promise does not signal
* that the snippet is completely filled-in or accepted.
*/
insertSnippet
(
snippet
:
SnippetString
,
options
?:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}):
Thenable
<
boolean
>
;
insertSnippet
(
snippet
:
SnippetString
,
selection
?:
Selection
|
Selection
[],
options
?:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}):
Thenable
<
boolean
>
;
/**
* Adds a set of decorations to the text editor. If a set of decorations already exists with
...
...
src/vs/workbench/api/node/extHost.protocol.ts
浏览文件 @
a2a077b0
...
...
@@ -138,7 +138,7 @@ export abstract class MainThreadEditorsShape {
$tryRevealRange
(
id
:
string
,
range
:
editorCommon
.
IRange
,
revealType
:
TextEditorRevealType
):
TPromise
<
any
>
{
throw
ni
();
}
$trySetSelections
(
id
:
string
,
selections
:
editorCommon
.
ISelection
[]):
TPromise
<
any
>
{
throw
ni
();
}
$tryApplyEdits
(
id
:
string
,
modelVersionId
:
number
,
edits
:
editorCommon
.
ISingleEditOperation
[],
opts
:
IApplyEditsOptions
):
TPromise
<
boolean
>
{
throw
ni
();
}
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
opts
:
IUndoStopOptions
):
TPromise
<
any
>
{
throw
ni
();
}
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
selections
:
editorCommon
.
ISelection
[],
opts
:
IUndoStopOptions
):
TPromise
<
any
>
{
throw
ni
();
}
}
export
abstract
class
MainThreadTreeExplorersShape
{
...
...
src/vs/workbench/api/node/extHostEditors.ts
浏览文件 @
a2a077b0
...
...
@@ -620,8 +620,17 @@ class ExtHostTextEditor implements vscode.TextEditor {
});
}
insertSnippet
(
snippet
:
SnippetString
,
options
:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}
=
{
undoStopBefore
:
true
,
undoStopAfter
:
true
}):
Thenable
<
boolean
>
{
return
this
.
_proxy
.
$tryInsertSnippet
(
this
.
_id
,
snippet
.
value
,
options
);
insertSnippet
(
snippet
:
SnippetString
,
where
?:
Selection
|
Selection
[],
options
:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}
=
{
undoStopBefore
:
true
,
undoStopAfter
:
true
}):
Thenable
<
boolean
>
{
if
(
!
where
||
(
Array
.
isArray
(
where
)
&&
where
.
length
===
0
))
{
where
=
this
.
_selections
;
}
const
selections
=
Array
.
isArray
(
where
)
?
where
.
map
(
TypeConverters
.
fromSelection
)
:
[
TypeConverters
.
fromSelection
(
where
)];
return
this
.
_proxy
.
$tryInsertSnippet
(
this
.
_id
,
snippet
.
value
,
selections
,
options
);
}
// ---- util
...
...
src/vs/workbench/api/node/mainThreadEditors.ts
浏览文件 @
a2a077b0
...
...
@@ -293,11 +293,11 @@ export class MainThreadEditors extends MainThreadEditorsShape {
return
TPromise
.
as
(
this
.
_textEditorsMap
[
id
].
applyEdits
(
modelVersionId
,
edits
,
opts
));
}
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
opts
:
IUndoStopOptions
):
TPromise
<
boolean
>
{
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
selections
:
ISelection
[],
opts
:
IUndoStopOptions
):
TPromise
<
boolean
>
{
if
(
!
this
.
_textEditorsMap
[
id
])
{
return
TPromise
.
wrapError
(
'
TextEditor disposed
'
);
}
return
TPromise
.
as
(
this
.
_textEditorsMap
[
id
].
insertSnippet
(
template
,
opts
));
return
TPromise
.
as
(
this
.
_textEditorsMap
[
id
].
insertSnippet
(
template
,
selections
,
opts
));
}
$registerTextEditorDecorationType
(
key
:
string
,
options
:
IDecorationRenderOptions
):
void
{
...
...
src/vs/workbench/api/node/mainThreadEditorsTracker.ts
浏览文件 @
a2a077b0
...
...
@@ -397,19 +397,20 @@ export class MainThreadTextEditor {
return
false
;
}
insertSnippet
(
template
:
string
,
opts
:
IUndoStopOptions
)
{
const
snippetController
=
SnippetController
.
get
(
this
.
_codeEditor
);
insertSnippet
(
template
:
string
,
selections
:
EditorCommon
.
ISelection
[],
opts
:
IUndoStopOptions
)
{
if
(
!
this
.
_codeEditor
)
{
return
false
;
}
this
.
_codeEditor
.
focus
();
this
.
_codeEditor
.
setSelections
(
selections
);
if
(
opts
.
undoStopBefore
)
{
this
.
_codeEditor
.
pushUndoStop
();
}
const
snippetController
=
SnippetController
.
get
(
this
.
_codeEditor
);
snippetController
.
insertSnippet
(
template
,
0
,
0
);
if
(
opts
.
undoStopAfter
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录