Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
5e021a4f
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,发现更多精彩内容 >>
提交
5e021a4f
编写于
1月 25, 2017
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
insertSnippet with Position or Range, #19116
上级
8630aef3
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
31 addition
and
15 deletion
+31
-15
src/vs/vscode.d.ts
src/vs/vscode.d.ts
+2
-2
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
+23
-8
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
未找到文件。
src/vs/vscode.d.ts
浏览文件 @
5e021a4f
...
...
@@ -946,12 +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. D
efaults to the current editor selection.
* @param
location Ranges or position at which to insert the snippet, d
efaults 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
,
selection
?:
Selection
|
Selection
[],
options
?:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}):
Thenable
<
boolean
>
;
insertSnippet
(
snippet
:
SnippetString
,
location
?:
Position
|
Position
[]
|
Range
|
Range
[],
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
浏览文件 @
5e021a4f
...
...
@@ -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
,
selections
:
editorCommon
.
I
Selection
[],
opts
:
IUndoStopOptions
):
TPromise
<
any
>
{
throw
ni
();
}
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
selections
:
editorCommon
.
I
Range
[],
opts
:
IUndoStopOptions
):
TPromise
<
any
>
{
throw
ni
();
}
}
export
abstract
class
MainThreadTreeExplorersShape
{
...
...
src/vs/workbench/api/node/extHostEditors.ts
浏览文件 @
5e021a4f
...
...
@@ -13,7 +13,7 @@ import { TPromise } from 'vs/base/common/winjs.base';
import
{
IThreadService
}
from
'
vs/workbench/services/thread/common/threadService
'
;
import
{
ExtHostDocuments
,
ExtHostDocumentData
}
from
'
vs/workbench/api/node/extHostDocuments
'
;
import
{
Selection
,
Range
,
Position
,
EndOfLine
,
TextEditorRevealType
,
TextEditorSelectionChangeKind
,
TextEditorLineNumbersStyle
,
SnippetString
}
from
'
./extHostTypes
'
;
import
{
ISingleEditOperation
,
TextEditorCursorStyle
}
from
'
vs/editor/common/editorCommon
'
;
import
{
ISingleEditOperation
,
TextEditorCursorStyle
,
IRange
}
from
'
vs/editor/common/editorCommon
'
;
import
{
IResolvedTextEditorConfiguration
,
ISelectionChangeEvent
,
ITextEditorConfigurationUpdate
}
from
'
vs/workbench/api/node/mainThreadEditorsTracker
'
;
import
*
as
TypeConverters
from
'
./extHostTypeConverters
'
;
import
{
MainContext
,
MainThreadEditorsShape
,
ExtHostEditorsShape
,
ITextEditorAddData
,
ITextEditorPositionData
}
from
'
./extHost.protocol
'
;
...
...
@@ -620,17 +620,32 @@ class ExtHostTextEditor implements vscode.TextEditor {
});
}
insertSnippet
(
snippet
:
SnippetString
,
where
?:
Selection
|
Selection
[],
options
:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}
=
{
undoStopBefore
:
true
,
undoStopAfter
:
true
}):
Thenable
<
boolean
>
{
insertSnippet
(
snippet
:
SnippetString
,
where
?:
Position
|
Position
[]
|
Range
|
Range
[],
options
:
{
undoStopBefore
:
boolean
;
undoStopAfter
:
boolean
;
}
=
{
undoStopBefore
:
true
,
undoStopAfter
:
true
}):
Thenable
<
boolean
>
{
let
ranges
:
IRange
[];
if
(
!
where
||
(
Array
.
isArray
(
where
)
&&
where
.
length
===
0
))
{
where
=
this
.
_selections
;
}
ranges
=
this
.
_selections
.
map
(
TypeConverters
.
fromRange
);
}
else
if
(
where
instanceof
Position
)
{
const
{
lineNumber
,
column
}
=
TypeConverters
.
fromPosition
(
where
);
ranges
=
[{
startLineNumber
:
lineNumber
,
startColumn
:
column
,
endLineNumber
:
lineNumber
,
endColumn
:
column
}];
const
selections
=
Array
.
isArray
(
where
)
?
where
.
map
(
TypeConverters
.
fromSelection
)
:
[
TypeConverters
.
fromSelection
(
where
)];
}
else
if
(
where
instanceof
Range
)
{
ranges
=
[
TypeConverters
.
fromRange
(
where
)];
}
else
{
ranges
=
[];
for
(
const
posOrRange
of
where
)
{
if
(
posOrRange
instanceof
Range
)
{
ranges
.
push
(
TypeConverters
.
fromRange
(
posOrRange
));
}
else
{
const
{
lineNumber
,
column
}
=
TypeConverters
.
fromPosition
(
posOrRange
);
ranges
.
push
({
startLineNumber
:
lineNumber
,
startColumn
:
column
,
endLineNumber
:
lineNumber
,
endColumn
:
column
});
}
}
}
return
this
.
_proxy
.
$tryInsertSnippet
(
this
.
_id
,
snippet
.
value
,
selection
s
,
options
);
return
this
.
_proxy
.
$tryInsertSnippet
(
this
.
_id
,
snippet
.
value
,
range
s
,
options
);
}
// ---- util
...
...
src/vs/workbench/api/node/mainThreadEditors.ts
浏览文件 @
5e021a4f
...
...
@@ -293,11 +293,11 @@ export class MainThreadEditors extends MainThreadEditorsShape {
return
TPromise
.
as
(
this
.
_textEditorsMap
[
id
].
applyEdits
(
modelVersionId
,
edits
,
opts
));
}
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
selections
:
ISelection
[],
opts
:
IUndoStopOptions
):
TPromise
<
boolean
>
{
$tryInsertSnippet
(
id
:
string
,
template
:
string
,
ranges
:
IRange
[],
opts
:
IUndoStopOptions
):
TPromise
<
boolean
>
{
if
(
!
this
.
_textEditorsMap
[
id
])
{
return
TPromise
.
wrapError
(
'
TextEditor disposed
'
);
}
return
TPromise
.
as
(
this
.
_textEditorsMap
[
id
].
insertSnippet
(
template
,
selection
s
,
opts
));
return
TPromise
.
as
(
this
.
_textEditorsMap
[
id
].
insertSnippet
(
template
,
range
s
,
opts
));
}
$registerTextEditorDecorationType
(
key
:
string
,
options
:
IDecorationRenderOptions
):
void
{
...
...
src/vs/workbench/api/node/mainThreadEditorsTracker.ts
浏览文件 @
5e021a4f
...
...
@@ -397,14 +397,15 @@ export class MainThreadTextEditor {
return
false
;
}
insertSnippet
(
template
:
string
,
selections
:
EditorCommon
.
ISelection
[],
opts
:
IUndoStopOptions
)
{
insertSnippet
(
template
:
string
,
ranges
:
EditorCommon
.
IRange
[],
opts
:
IUndoStopOptions
)
{
if
(
!
this
.
_codeEditor
)
{
return
false
;
}
this
.
_codeEditor
.
focus
(
);
const
selections
=
ranges
.
map
(
r
=>
new
Selection
(
r
.
startLineNumber
,
r
.
startColumn
,
r
.
endLineNumber
,
r
.
endColumn
)
);
this
.
_codeEditor
.
setSelections
(
selections
);
this
.
_codeEditor
.
focus
();
if
(
opts
.
undoStopBefore
)
{
this
.
_codeEditor
.
pushUndoStop
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录