Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
bf422503
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,发现更多精彩内容 >>
提交
bf422503
编写于
6月 19, 2016
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Provide more common code instead of specializing for VB.
上级
015ff7e3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
28 addition
and
38 deletion
+28
-38
src/EditorFeatures/Core/Extensibility/Completion/CompletionHelper.cs
...eatures/Core/Extensibility/Completion/CompletionHelper.cs
+26
-7
src/EditorFeatures/Test2/IntelliSense/VisualBasicCompletionCommandHandlerTests.vb
.../IntelliSense/VisualBasicCompletionCommandHandlerTests.vb
+1
-2
src/EditorFeatures/VisualBasic/Completion/VisualBasicCompletionHelper.vb
...res/VisualBasic/Completion/VisualBasicCompletionHelper.vb
+1
-29
未找到文件。
src/EditorFeatures/Core/Extensibility/Completion/CompletionHelper.cs
浏览文件 @
bf422503
...
...
@@ -108,9 +108,33 @@ protected static bool IsAllDigits(string filterText)
}
protected
PatternMatch
?
GetMatch
(
CompletionItem
item
,
string
filterText
,
bool
includeMatchSpans
)
{
// If the item has a dot in it (i.e. for something like enum completion), then attempt
// to match what the user wrote against the last portion of the name. That way if they
// write "Bl" and we have "Blub" and "Color.Black", we'll consider hte latter to be a
// better match as they'll both be prefix matches, and the latter will have a higher
// priority.
var
lastDotIndex
=
item
.
FilterText
.
LastIndexOf
(
'.'
);
if
(
lastDotIndex
>=
0
)
{
var
textAfterLastDot
=
item
.
FilterText
.
Substring
(
lastDotIndex
+
1
);
var
match
=
GetMatchWorker
(
textAfterLastDot
,
filterText
,
includeMatchSpans
);
if
(
match
!=
null
)
{
return
match
;
}
}
// Didn't have a dot, or the user text didn't match the portion after the dot.
// Just do a normal check against the entire completion item.
return
GetMatchWorker
(
item
.
FilterText
,
filterText
,
includeMatchSpans
);
}
private
PatternMatch
?
GetMatchWorker
(
string
completionItemText
,
string
filterText
,
bool
includeMatchSpans
)
{
var
patternMatcher
=
this
.
GetPatternMatcher
(
filterText
,
CultureInfo
.
CurrentCulture
);
var
match
=
patternMatcher
.
GetFirstMatch
(
item
.
Filter
Text
,
includeMatchSpans
);
var
match
=
patternMatcher
.
GetFirstMatch
(
completionItem
Text
,
includeMatchSpans
);
if
(
match
!=
null
)
{
...
...
@@ -121,7 +145,7 @@ protected static bool IsAllDigits(string filterText)
if
(!
CultureInfo
.
CurrentCulture
.
Equals
(
EnUSCultureInfo
))
{
patternMatcher
=
this
.
GetEnUSPatternMatcher
(
filterText
);
match
=
patternMatcher
.
GetFirstMatch
(
item
.
Filter
Text
);
match
=
patternMatcher
.
GetFirstMatch
(
completionItem
Text
);
if
(
match
!=
null
)
{
return
match
;
...
...
@@ -228,11 +252,6 @@ protected static bool IsKeywordItem(CompletionItem item)
return
item
.
Tags
.
Contains
(
CompletionTags
.
Keyword
);
}
protected
static
bool
IsEnumMemberItem
(
CompletionItem
item
)
{
return
item
.
Tags
.
Contains
(
CompletionTags
.
EnumMember
);
}
protected
int
CompareMatches
(
PatternMatch
match1
,
PatternMatch
match2
,
CompletionItem
item1
,
CompletionItem
item2
)
{
// First see how the two items compare in a case insensitive fashion. Matches that
...
...
src/EditorFeatures/Test2/IntelliSense/VisualBasicCompletionCommandHandlerTests.vb
浏览文件 @
bf422503
...
...
@@ -11,7 +11,6 @@ Imports Microsoft.VisualStudio.Text.Projection
Namespace
Microsoft.CodeAnalysis.Editor.UnitTests.IntelliSense
Public
Class
VisualBasicCompletionCommandHandlerTests
<
WorkItem
(
546208
,
"http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/546208"
)
>
<
WpfFact
,
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
Completion
)
>
Public
Async
Function
MultiWordKeywordCommitBehavior
()
As
Task
...
...
@@ -2293,4 +2292,4 @@ End Module]]></Document>)
End
Using
End
Function
End
Class
End
Namespace
End
Namespace
\ No newline at end of file
src/EditorFeatures/VisualBasic/Completion/VisualBasicCompletionHelper.vb
浏览文件 @
bf422503
Imports
System.Collections.Immutable
Imports
System.Composition
Imports
Microsoft.CodeAnalysis.Completion
Imports
System.Composition
Imports
Microsoft.CodeAnalysis.Host
Imports
Microsoft.CodeAnalysis.Host.Mef
Imports
Microsoft.CodeAnalysis.Shared.Utilities
Namespace
Microsoft.CodeAnalysis.Editor.VisualBasic.Completion
...
...
@@ -33,30 +30,5 @@ Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.Completion
Public
Sub
New
()
MyBase
.
New
(
isCaseSensitive
:
=
False
)
End
Sub
Public
Overrides
Function
IsBetterFilterMatch
(
item1
As
CompletionItem
,
item2
As
CompletionItem
,
filterText
As
String
,
trigger
As
CompletionTrigger
,
recentItems
As
ImmutableArray
(
Of
String
))
As
Boolean
If
IsEnumMemberItem
(
item2
)
Then
Dim
match1
=
GetMatch
(
item1
,
filterText
)
Dim
match2
=
GetMatch
(
item2
,
filterText
)
If
match1
.
HasValue
AndAlso
match2
.
HasValue
Then
If
match1
.
Value
.
Kind
=
PatternMatchKind
.
Prefix
AndAlso
match2
.
Value
.
Kind
=
PatternMatchKind
.
Substring
Then
' If an item from Enum completion Is an equally good match apart from
' being a substring rather than prefix match, take it.
If
IsEnumMemberItem
(
item1
)
AndAlso
match1
.
Value
.
CamelCaseWeight
.
GetValueOrDefault
()
=
match2
.
Value
.
CamelCaseWeight
.
GetValueOrDefault
()
AndAlso
match1
.
Value
.
IsCaseSensitive
=
match2
.
Value
.
IsCaseSensitive
Then
Return
False
End
If
End
If
End
If
End
If
Return
MyBase
.
IsBetterFilterMatch
(
item1
,
item2
,
filterText
,
trigger
,
recentItems
)
End
Function
End
Class
End
Namespace
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录