Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
525c301f
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,发现更多精彩内容 >>
未验证
提交
525c301f
编写于
9月 15, 2020
作者:
G
Gen Lu
提交者:
GitHub
9月 15, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #47647 from genlu/TriggerLocation
Keep track of the trigger location for async completion
上级
7f893855
3b2a9a95
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
31 addition
and
26 deletion
+31
-26
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/CommitManager.cs
...lementation/IntelliSense/AsyncCompletion/CommitManager.cs
+1
-1
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/CompletionSource.cs
...entation/IntelliSense/AsyncCompletion/CompletionSource.cs
+3
-4
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/Helpers.cs
...re/Implementation/IntelliSense/AsyncCompletion/Helpers.cs
+1
-21
src/VisualStudio/Core/Test/DebuggerIntelliSense/CSharpDebuggerIntellisenseTests.vb
...t/DebuggerIntelliSense/CSharpDebuggerIntellisenseTests.vb
+26
-0
未找到文件。
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/CommitManager.cs
浏览文件 @
525c301f
...
...
@@ -123,7 +123,7 @@ internal CommitManager(ITextView textView, RecentItemsManager recentItemsManager
return
new
AsyncCompletionData
.
CommitResult
(
isHandled
:
true
,
AsyncCompletionData
.
CommitBehavior
.
None
);
}
if
(!
Helpers
.
TryGetInitialTriggerLocation
(
item
,
out
var
triggerLocation
))
if
(!
Helpers
.
TryGetInitialTriggerLocation
(
session
,
out
var
triggerLocation
))
{
// Need the trigger snapshot to calculate the span when the commit changes to be applied.
// They should always be available from VS. Just to be defensive, if it's not found here, Roslyn should not make a commit.
...
...
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/CompletionSource.cs
浏览文件 @
525c301f
...
...
@@ -220,6 +220,7 @@ static void CheckForExperimentStatus(ITextView textView, Document document)
SnapshotSpan
applicableToSpan
,
CancellationToken
cancellationToken
)
{
session
.
Properties
[
TriggerLocation
]
=
triggerLocation
;
return
GetCompletionContextWorkerAsync
(
session
,
trigger
,
triggerLocation
,
isExpanded
:
false
,
cancellationToken
);
}
...
...
@@ -306,7 +307,7 @@ static void CheckForExperimentStatus(ITextView textView, Document document)
foreach
(
var
roslynItem
in
completionList
.
Items
)
{
cancellationToken
.
ThrowIfCancellationRequested
();
var
item
=
Convert
(
document
,
roslynItem
,
filterSet
,
triggerLocation
);
var
item
=
Convert
(
document
,
roslynItem
,
filterSet
);
itemsBuilder
.
Add
(
item
);
}
...
...
@@ -435,8 +436,7 @@ public async Task<object> GetDescriptionAsync(IAsyncCompletionSession session, V
private
VSCompletionItem
Convert
(
Document
document
,
RoslynCompletionItem
roslynItem
,
FilterSet
filterSet
,
SnapshotPoint
triggerLocation
)
FilterSet
filterSet
)
{
VSCompletionItemData
itemData
;
...
...
@@ -490,7 +490,6 @@ public async Task<object> GetDescriptionAsync(IAsyncCompletionSession session, V
attributeIcons
:
itemData
.
AttributeIcons
);
item
.
Properties
.
AddProperty
(
RoslynItem
,
roslynItem
);
item
.
Properties
.
AddProperty
(
TriggerLocation
,
triggerLocation
);
return
item
;
}
...
...
src/EditorFeatures/Core/Implementation/IntelliSense/AsyncCompletion/Helpers.cs
浏览文件 @
525c301f
...
...
@@ -140,27 +140,7 @@ internal static bool IsStandardCommitCharacter(char c)
=>
c
==
'\t'
||
c
==
'\n'
||
c
==
'\0'
;
internal
static
bool
TryGetInitialTriggerLocation
(
EditorAsyncCompletion
.
IAsyncCompletionSession
session
,
out
SnapshotPoint
initialTriggerLocation
)
{
if
(
session
is
EditorAsyncCompletion
.
IAsyncCompletionSessionOperations
sessionOperations
)
{
initialTriggerLocation
=
sessionOperations
.
InitialTriggerLocation
;
return
true
;
}
initialTriggerLocation
=
default
;
return
false
;
}
internal
static
bool
TryGetInitialTriggerLocation
(
VSCompletionItem
item
,
out
SnapshotPoint
initialTriggerLocation
)
{
if
(
item
.
Properties
.
TryGetProperty
(
CompletionSource
.
TriggerLocation
,
out
initialTriggerLocation
))
{
return
true
;
}
initialTriggerLocation
=
default
;
return
false
;
}
=>
session
.
Properties
.
TryGetProperty
(
CompletionSource
.
TriggerLocation
,
out
initialTriggerLocation
);
// This is a temporarily method to support preference of IntelliCode items comparing to non-IntelliCode items.
// We expect that Editor will introduce this support and we will get rid of relying on the "★" then.
...
...
src/VisualStudio/Core/Test/DebuggerIntelliSense/CSharpDebuggerIntellisenseTests.vb
浏览文件 @
525c301f
...
...
@@ -730,5 +730,31 @@ $$</Document>
Assert
.
False
(
state
.
HasSuggestedItem
())
End
Using
End
Function
<
WorkItem
(
1163608
,
"https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1163608"
)
>
<
ConditionalWpfFact
(
GetType
(
x86
)),
Trait
(
Traits
.
Feature
,
Traits
.
Features
.
DebuggingIntelliSense
)
>
Public
Async
Function
TestItemDescription
()
As
Task
Dim
text
=
<
Workspace
>
<
Project
Language
=
"C#"
CommonReferences
=
"true"
>
<
Document
>
class
Program
{
static
void
Main
(
string
[]
args
)
[|
{
|]
}
}
</
Document
>
</
Project
>
</
Workspace
>
Using
state
=
TestState
.
CreateCSharpTestState
(
text
,
True
)
state
.
SendTypeChars
(
"arg"
)
Await
state
.
WaitForAsynchronousOperationsAsync
()
Await
state
.
AssertCompletionSession
()
Await
state
.
AssertSelectedCompletionItem
(
"args"
)
Dim
description
=
Await
state
.
GetSelectedItemDescriptionAsync
()
Assert
.
Contains
(
"args"
,
description
.
Text
)
state
.
SendTab
()
Assert
.
Contains
(
"args"
,
state
.
GetCurrentViewLineText
())
End
Using
End
Function
End
Class
End
Namespace
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录