Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
13f88d95
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
13f88d95
编写于
5月 18, 2015
作者:
D
David Poeschl
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #2848 from dpoeschl/SnippetsOnWrongBuffer
Allow snippets in Inline Diff View
上级
9875227e
a45a2a22
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
15 deletion
+26
-15
src/VisualStudio/Core/Def/Implementation/Snippets/AbstractSnippetExpansionClient.cs
...Implementation/Snippets/AbstractSnippetExpansionClient.cs
+26
-15
未找到文件。
src/VisualStudio/Core/Def/Implementation/Snippets/AbstractSnippetExpansionClient.cs
浏览文件 @
13f88d95
...
...
@@ -132,7 +132,10 @@ private void SetNewEndPosition(ITrackingSpan endTrackingSpan)
if
(
endTrackingSpan
!=
null
)
{
SnapshotSpan
endSpanInSurfaceBuffer
;
if
(!
TryGetSurfaceBufferSpan
(
endTrackingSpan
.
GetSpan
(
SubjectBuffer
.
CurrentSnapshot
),
out
endSpanInSurfaceBuffer
))
if
(!
TryGetSpanOnHigherBuffer
(
endTrackingSpan
.
GetSpan
(
SubjectBuffer
.
CurrentSnapshot
),
TextView
.
TextBuffer
,
out
endSpanInSurfaceBuffer
))
{
return
;
}
...
...
@@ -344,19 +347,28 @@ public virtual bool TryInsertExpansion(int startPositionInSubjectBuffer, int end
int
endLine
=
0
;
int
endIndex
=
0
;
// The expansion itself needs to be created in the
surface
buffer, so map everything up
// The expansion itself needs to be created in the
data
buffer, so map everything up
var
startPointInSubjectBuffer
=
SubjectBuffer
.
CurrentSnapshot
.
GetPoint
(
startPositionInSubjectBuffer
);
var
endPointInSubjectBuffer
=
SubjectBuffer
.
CurrentSnapshot
.
GetPoint
(
endPositionInSubjectBuffer
);
SnapshotSpan
surfaceBufferSpan
;
if
(!
TryGetSurfaceBufferSpan
(
SubjectBuffer
.
CurrentSnapshot
.
GetSpan
(
startPositionInSubjectBuffer
,
endPositionInSubjectBuffer
-
startPositionInSubjectBuffer
),
out
surfaceBufferSpan
))
SnapshotSpan
dataBufferSpan
;
if
(!
TryGetSpanOnHigherBuffer
(
SubjectBuffer
.
CurrentSnapshot
.
GetSpan
(
startPositionInSubjectBuffer
,
endPositionInSubjectBuffer
-
startPositionInSubjectBuffer
),
TextView
.
TextViewModel
.
DataBuffer
,
out
dataBufferSpan
))
{
return
false
;
}
var
buffer
=
EditorAdaptersFactoryService
.
GetBufferAdapter
(
TextView
.
TextBuffer
);
buffer
.
GetLineIndexOfPosition
(
surfaceBufferSpan
.
Start
.
Position
,
out
startLine
,
out
startIndex
);
buffer
.
GetLineIndexOfPosition
(
surfaceBufferSpan
.
End
.
Position
,
out
endLine
,
out
endIndex
);
var
buffer
=
EditorAdaptersFactoryService
.
GetBufferAdapter
(
TextView
.
TextViewModel
.
DataBuffer
);
var
expansion
=
buffer
as
IVsExpansion
;
if
(
buffer
==
null
||
expansion
==
null
)
{
return
false
;
}
buffer
.
GetLineIndexOfPosition
(
dataBufferSpan
.
Start
.
Position
,
out
startLine
,
out
startIndex
);
buffer
.
GetLineIndexOfPosition
(
dataBufferSpan
.
End
.
Position
,
out
endLine
,
out
endIndex
);
var
textSpan
=
new
VsTextSpan
{
...
...
@@ -366,7 +378,6 @@ public virtual bool TryInsertExpansion(int startPositionInSubjectBuffer, int end
iEndIndex
=
endIndex
};
var
expansion
=
buffer
as
IVsExpansion
;
return
expansion
.
InsertExpansion
(
textSpan
,
textSpan
,
this
,
LanguageServiceGuid
,
out
ExpansionSession
)
==
VSConstants
.
S_OK
;
}
...
...
@@ -422,7 +433,7 @@ public int OnItemChosen(string pszTitle, string pszPath)
textSpan
.
iEndLine
=
textSpan
.
iStartLine
;
textSpan
.
iEndIndex
=
textSpan
.
iStartIndex
;
IVsExpansion
expansion
=
EditorAdaptersFactoryService
.
GetBufferAdapter
(
TextView
.
TextBuffer
)
as
IVsExpansion
;
IVsExpansion
expansion
=
EditorAdaptersFactoryService
.
GetBufferAdapter
(
TextView
.
Text
ViewModel
.
Data
Buffer
)
as
IVsExpansion
;
earlyEndExpansionHappened
=
false
;
hr
=
expansion
.
InsertNamedExpansion
(
pszTitle
,
pszPath
,
textSpan
,
this
,
LanguageServiceGuid
,
fShowDisambiguationUI
:
0
,
pSession
:
out
ExpansionSession
);
...
...
@@ -590,18 +601,18 @@ internal bool TryGetSubjectBufferSpan(VsTextSpan surfaceBufferTextSpan, out Snap
return
false
;
}
internal
bool
TryGetS
urfaceBufferSpan
(
SnapshotSpan
snapshotSpan
,
out
SnapshotSpan
surfaceBufferS
pan
)
internal
bool
TryGetS
panOnHigherBuffer
(
SnapshotSpan
snapshotSpan
,
ITextBuffer
targetBuffer
,
out
SnapshotSpan
s
pan
)
{
var
s
urfaceBufferSpanCollection
=
TextView
.
BufferGraph
.
MapUpToBuffer
(
snapshotSpan
,
SpanTrackingMode
.
EdgeExclusive
,
TextView
.
Tex
tBuffer
);
var
s
panCollection
=
TextView
.
BufferGraph
.
MapUpToBuffer
(
snapshotSpan
,
SpanTrackingMode
.
EdgeExclusive
,
targe
tBuffer
);
// Bail if a snippet span does not map up to exactly one s
urface buffer s
pan.
if
(
s
urfaceBufferS
panCollection
.
Count
==
1
)
// Bail if a snippet span does not map up to exactly one span.
if
(
spanCollection
.
Count
==
1
)
{
s
urfaceBufferSpan
=
surfaceBufferS
panCollection
.
Single
();
s
pan
=
s
panCollection
.
Single
();
return
true
;
}
s
urfaceBufferS
pan
=
default
(
SnapshotSpan
);
span
=
default
(
SnapshotSpan
);
return
false
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录