Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
e49f2a44
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,发现更多精彩内容 >>
提交
e49f2a44
编写于
10月 24, 2016
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplify creation of presentation items.
上级
d370801e
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
34 addition
and
46 deletion
+34
-46
src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/CustomCommitCompletion.cs
...liSense/Completion/Presentation/CustomCommitCompletion.cs
+6
-9
src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/Roslyn14CompletionSet.cs
...lliSense/Completion/Presentation/Roslyn14CompletionSet.cs
+28
-37
未找到文件。
src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/CustomCommitCompletion.cs
浏览文件 @
e49f2a44
...
...
@@ -19,10 +19,12 @@ internal sealed class CustomCommitCompletion : Completion3, ICustomCommit
private
readonly
CompletionPresenterSession
_completionPresenterSession
;
internal
readonly
CompletionItem
CompletionItem
;
private
readonly
ImageMoniker
_imageMoniker
;
private
readonly
string
_displayText
;
public
CustomCommitCompletion
(
CompletionPresenterSession
completionPresenterSession
,
CompletionItem
completionItem
)
CompletionItem
completionItem
,
string
displayText
)
{
// PERF: Note that the base class contains a constructor taking the displayText string
// but we're intentionally NOT using that here because it allocates a private CompletionState
...
...
@@ -30,6 +32,7 @@ internal sealed class CustomCommitCompletion : Completion3, ICustomCommit
// extra allocation is avoided.
_completionPresenterSession
=
completionPresenterSession
;
this
.
CompletionItem
=
completionItem
;
_displayText
=
displayText
??
completionItem
.
DisplayText
;
_imageMoniker
=
ImageMonikers
.
GetImageMoniker
(
CompletionItem
.
Tags
);
}
...
...
@@ -41,15 +44,9 @@ public void Commit()
_completionPresenterSession
.
OnCompletionItemCommitted
(
CompletionItem
);
}
public
override
string
DisplayText
=>
this
.
CompletionItem
.
D
isplayText
;
public
override
string
DisplayText
=>
_d
isplayText
;
public
override
string
InsertionText
{
get
{
return
this
.
DisplayText
;
// [sic] Same as DisplayText
}
}
public
override
string
InsertionText
=>
DisplayText
;
public
override
string
Description
{
...
...
src/EditorFeatures/Core/Implementation/IntelliSense/Completion/Presentation/Roslyn14CompletionSet.cs
浏览文件 @
e49f2a44
...
...
@@ -69,52 +69,51 @@ public void SetTrackingSpan(ITrackingSpan trackingSpan)
{
this
.
AssertIsForeground
();
VSCompletion
selectedCompletionItem
=
null
;
// Initialize the completion map to a reasonable default initial size (+1 for the builder)
CompletionItemMap
=
CompletionItemMap
??
new
Dictionary
<
CompletionItem
,
VSCompletion
>(
completionItems
.
Count
+
1
);
FilterText
=
filterText
;
SuggestionModeItem
=
suggestionModeItem
;
this
.
SetupFilters
(
completionItemFilters
);
CreateCompletionListBuilder
(
selectedItem
,
suggestionModeItem
,
suggestionMode
);
CreateNormalCompletionListItems
(
completionItems
);
var
selectedCompletionItem
=
GetVSCompletion
(
selectedItem
);
VsCompletionSet
.
SelectionStatus
=
new
CompletionSelectionStatus
(
selectedCompletionItem
,
isSelected
:
!
isSoftSelected
,
isUnique
:
selectedCompletionItem
!=
null
);
}
private
void
CreateCompletionListBuilder
(
CompletionItem
selectedItem
,
CompletionItem
suggestionModeItem
,
bool
suggestionMode
)
{
try
{
VsCompletionSet
.
WritableCompletionBuilders
.
BeginBulkOperation
();
VsCompletionSet
.
WritableCompletionBuilders
.
Clear
();
this
.
SetupFilters
(
completionItemFilters
);
var
applicableToText
=
VsCompletionSet
.
ApplicableTo
.
GetText
(
VsCompletionSet
.
ApplicableTo
.
TextBuffer
.
CurrentSnapshot
);
CompletionItem
filteredSuggestionModeItem
=
null
;
if
(
selectedItem
!=
null
)
if
(
suggestionMode
)
{
var
completionItem
=
CompletionItem
.
Create
(
displayText
:
applicableToText
);
completionItem
.
Span
=
VsCompletionSet
.
ApplicableTo
.
GetSpan
(
VsCompletionSet
.
ApplicableTo
.
TextBuffer
.
CurrentSnapshot
).
Span
.
ToTextSpan
();
var
applicableToText
=
VsCompletionSet
.
ApplicableTo
.
GetText
(
VsCompletionSet
.
ApplicableTo
.
TextBuffer
.
CurrentSnapshot
);
filteredSuggestionModeItem
=
completionItem
;
}
var
showBuilder
=
suggestionMode
||
suggestionModeItem
!=
null
;
var
bestSuggestionModeItem
=
applicableToText
.
Length
>
0
?
filteredSuggestionModeItem
:
suggestionModeItem
??
filteredSuggestionModeItem
;
if
(
showBuilder
&&
bestSuggestionModeItem
!=
null
)
{
var
suggestionModeCompletion
=
GetVSCompletion
(
bestSuggestionModeItem
);
VsCompletionSet
.
WritableCompletionBuilders
.
Add
(
suggestionModeCompletion
);
if
(
selectedItem
!=
null
&&
selectedItem
==
suggestionModeItem
)
{
selectedCompletionItem
=
suggestionModeCompletion
;
}
var
text
=
applicableToText
.
Length
>
0
?
applicableToText
:
suggestionModeItem
.
DisplayText
;
var
vsCompletion
=
GetVSCompletion
(
suggestionModeItem
,
text
);
VsCompletionSet
.
WritableCompletionBuilders
.
Add
(
vsCompletion
);
}
}
finally
{
VsCompletionSet
.
WritableCompletionBuilders
.
EndBulkOperation
();
}
}
private
void
CreateNormalCompletionListItems
(
IList
<
CompletionItem
>
completionItems
)
{
try
{
VsCompletionSet
.
WritableCompletions
.
BeginBulkOperation
();
...
...
@@ -124,32 +123,24 @@ public void SetTrackingSpan(ITrackingSpan trackingSpan)
{
var
completionItem
=
GetVSCompletion
(
item
);
VsCompletionSet
.
WritableCompletions
.
Add
(
completionItem
);
if
(
item
==
selectedItem
)
{
selectedCompletionItem
=
completionItem
;
}
}
}
finally
{
VsCompletionSet
.
WritableCompletions
.
EndBulkOperation
();
}
VsCompletionSet
.
SelectionStatus
=
new
CompletionSelectionStatus
(
selectedCompletionItem
,
isSelected
:
!
isSoftSelected
,
isUnique
:
selectedCompletionItem
!=
null
);
}
protected
virtual
void
SetupFilters
(
ImmutableArray
<
CompletionItemFilter
>
completionItemFilters
)
{
}
private
VSCompletion
GetVSCompletion
(
CompletionItem
item
)
private
VSCompletion
GetVSCompletion
(
CompletionItem
item
,
string
displayText
=
null
)
{
VSCompletion
value
;
if
(!
CompletionItemMap
.
TryGetValue
(
item
,
out
value
))
{
value
=
new
CustomCommitCompletion
(
CompletionPresenterSession
,
item
);
value
=
new
CustomCommitCompletion
(
CompletionPresenterSession
,
item
,
displayText
);
CompletionItemMap
.
Add
(
item
,
value
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录