Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
01351b1d
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,发现更多精彩内容 >>
提交
01351b1d
编写于
7月 25, 2016
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplify how we display reference counts for find-ref items.
上级
29a9e844
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
55 addition
and
44 deletion
+55
-44
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_FindReferences.cs
...tion/Library/FindResults/LibraryManager_FindReferences.cs
+22
-23
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_GoToDefinition.cs
...tion/Library/FindResults/LibraryManager_GoToDefinition.cs
+0
-1
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/AbstractTreeItem.cs
...ntation/Library/FindResults/TreeItems/AbstractTreeItem.cs
+1
-5
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/DefinitionTreeItem.cs
...ation/Library/FindResults/TreeItems/DefinitionTreeItem.cs
+31
-14
src/VisualStudio/Core/Def/ServicesVisualStudio.csproj
src/VisualStudio/Core/Def/ServicesVisualStudio.csproj
+1
-1
未找到文件。
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_FindReferences.cs
浏览文件 @
01351b1d
...
...
@@ -31,51 +31,50 @@ public void PresentDefinitionsAndReferences(DefinitionsAndReferences definitions
var
query
=
from
d
in
definitionsAndReferences
.
Definitions
from
i
in
CreateDefinitionItems
(
d
,
definitionsAndReferences
,
commonPathElements
)
select
i
;
select
(
AbstractTreeItem
)
i
;
return
query
.
ToList
();
}
private
I
Enumerable
<
Abstract
TreeItem
>
CreateDefinitionItems
(
private
I
mmutableArray
<
Definition
TreeItem
>
CreateDefinitionItems
(
DefinitionItem
definitionItem
,
DefinitionsAndReferences
definitionsAndReferences
,
int
commonPathElements
)
{
// Each definition item may end up as several top nodes (because of partials).
// Add the references to the last item actually in the list.
var
definitionTreeItems
=
ConvertToDefinitionTreeItems
(
definitionItem
);
if
(!
definitionTreeItems
.
IsEmpty
)
{
var
lastTreeItem
=
definitionTreeItems
.
Last
();
var
referenceItems
=
CreateReferenceItems
(
definitionItem
,
definitionsAndReferences
,
commonPathElements
);
lastTreeItem
.
Children
.
AddRange
(
referenceItems
);
lastTreeItem
.
SetReferenceCount
(
referenceItems
.
Count
);
return
ConvertToDefinitionTreeItems
(
definitionItem
,
referenceItems
);
}
return
definitionTreeItems
;
}
private
ImmutableArray
<
AbstractTreeItem
>
ConvertToDefinitionTreeItems
(
DefinitionItem
definitionItem
)
private
ImmutableArray
<
DefinitionTreeItem
>
ConvertToDefinitionTreeItems
(
DefinitionItem
definitionItem
,
ImmutableArray
<
SourceReferenceTreeItem
>
referenceItems
)
{
var
result
=
ImmutableArray
.
CreateBuilder
<
Abstract
TreeItem
>();
var
result
=
ImmutableArray
.
CreateBuilder
<
Definition
TreeItem
>();
for
each
(
var
location
in
definitionItem
.
Locations
)
for
(
int
i
=
0
,
n
=
definitionItem
.
Locations
.
Length
;
i
<
n
;
i
++
)
{
result
.
Add
(
new
DefinitionTreeItem
(
definitionItem
,
location
));
var
location
=
definitionItem
.
Locations
[
i
];
// Each definition item may end up as several top nodes (because of partials).
// Add the references to the last item actually in the list.
var
definitionTreeItem
=
i
==
n
-
1
?
new
DefinitionTreeItem
(
definitionItem
,
location
)
:
new
DefinitionTreeItem
(
definitionItem
,
location
,
referenceItems
);
result
.
Add
(
definitionTreeItem
);
}
return
result
.
ToImmutable
();
}
private
I
List
<
SourceReferenceTreeItem
>
CreateReferenceItems
(
private
I
mmutableArray
<
SourceReferenceTreeItem
>
CreateReferenceItems
(
DefinitionItem
definitionItem
,
DefinitionsAndReferences
definitionsAndReferences
,
int
commonPathElements
)
{
var
result
=
new
List
<
SourceReferenceTreeItem
>();
var
result
=
ImmutableArray
.
CreateBuilder
<
SourceReferenceTreeItem
>();
var
referenceItems
=
definitionsAndReferences
.
References
.
Where
(
r
=>
r
.
Definition
==
definitionItem
);
foreach
(
var
referenceItem
in
referenceItems
)
...
...
@@ -95,7 +94,7 @@ public void PresentDefinitionsAndReferences(DefinitionsAndReferences definitions
}
result
.
Sort
();
return
result
;
return
result
.
ToImmutable
()
;
}
}
}
\ No newline at end of file
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_GoToDefinition.cs
浏览文件 @
01351b1d
...
...
@@ -107,7 +107,6 @@ private AbstractTreeItem CreateTreeItem(INavigableItem item, int commonPathEleme
{
var
childItems
=
CreateNavigableItemTreeItems
(
item
.
ChildItems
,
commonPathElements
);
result
.
Children
.
AddRange
(
childItems
);
result
.
SetReferenceCount
(
childItems
.
Count
);
}
return
result
;
...
...
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/AbstractTreeItem.cs
浏览文件 @
01351b1d
...
...
@@ -39,9 +39,5 @@ public virtual bool CanGoToDefinition()
{
return
false
;
}
internal
virtual
void
SetReferenceCount
(
int
referenceCount
)
{
}
}
}
\ No newline at end of file
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/
Source
DefinitionTreeItem.cs
→
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/DefinitionTreeItem.cs
浏览文件 @
01351b1d
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using
System.Collections.Immutable
;
using
Microsoft.CodeAnalysis
;
using
Microsoft.CodeAnalysis.Editor.Implementation.FindReferences
;
using
Microsoft.CodeAnalysis.Editor.Shared.Extensions
;
using
Microsoft.VisualStudio.LanguageServices.Implementation.Utilities
;
using
Roslyn.Utilities
;
namespace
Microsoft.VisualStudio.LanguageServices.Implementation.Library.FindResults
{
...
...
@@ -12,22 +14,47 @@ internal class DefinitionTreeItem : AbstractTreeItem
private
readonly
DefinitionItem
_definitionItem
;
private
readonly
DefinitionLocation
_definitionLocation
;
public
DefinitionTreeItem
(
DefinitionItem
definitionItem
,
DefinitionLocation
definitionLocation
)
public
DefinitionTreeItem
(
DefinitionItem
definitionItem
,
DefinitionLocation
definitionLocation
,
ImmutableArray
<
SourceReferenceTreeItem
>
referenceItems
=
default
(
ImmutableArray
<
SourceReferenceTreeItem
>))
:
base
(
definitionItem
.
Tags
.
GetGlyph
().
GetGlyphIndex
())
{
_definitionItem
=
definitionItem
;
_definitionLocation
=
definitionLocation
;
if
(!
referenceItems
.
IsDefault
)
{
this
.
Children
.
AddRange
(
referenceItems
);
}
this
.
DisplayText
=
CreateDisplayText
();
}
private
string
CreateDisplayText
()
{
var
displayString
=
_definitionItem
.
DisplayParts
.
JoinText
();
var
referenceCount
=
this
.
Children
.
Count
;
return
_definitionLocation
.
OriginationParts
.
Length
==
0
?
displayString
:
$"[
{
_definitionLocation
.
OriginationParts
.
JoinText
()}
]
{
displayString
}
"
;
var
referenceCountDisplay
=
referenceCount
==
1
?
ServicesVSResources
.
_1_reference
:
string
.
Format
(
ServicesVSResources
.
_0_references
,
referenceCount
);
// If we don't have an origination or reference count, then just display the
// parts and nothing else. These items happen when we're getting third party
// results that tell us about their definition location, but not any additional
// reference. We don't want to say '0' references in that case as that can
// be misleading.
return
HasOrigination
()
?
$"[
{
_definitionLocation
.
OriginationParts
.
JoinText
()}
]
{
displayString
}
(
{
referenceCountDisplay
}
)"
:
referenceCount
>
0
?
$"
{
displayString
}
(
{
referenceCountDisplay
}
)"
:
displayString
;
}
private
bool
HasOrigination
()
{
return
_definitionLocation
.
OriginationParts
.
Length
>
0
;
}
public
override
int
GoToSource
()
...
...
@@ -41,15 +68,5 @@ public override bool CanGoToDefinition()
{
return
_definitionLocation
.
CanNavigateTo
();
}
internal
override
void
SetReferenceCount
(
int
referenceCount
)
{
// source case.
var
referenceCountDisplay
=
referenceCount
==
1
?
ServicesVSResources
.
_1_reference
:
string
.
Format
(
ServicesVSResources
.
_0_references
,
referenceCount
);
this
.
DisplayText
=
CreateDisplayText
()
+
$" (
{
referenceCountDisplay
}
)"
;
}
}
}
\ No newline at end of file
src/VisualStudio/Core/Def/ServicesVisualStudio.csproj
浏览文件 @
01351b1d
...
...
@@ -74,7 +74,7 @@
<Compile
Include=
"Implementation\LanguageService\AbstractPackage.cs"
/>
<Compile
Include=
"Implementation\Library\AbstractLibraryService.cs"
/>
<Compile
Include=
"Implementation\Library\ClassView\AbstractSyncClassViewCommandHandler.cs"
/>
<Compile
Include=
"Implementation\Library\FindResults\TreeItems\
Source
DefinitionTreeItem.cs"
/>
<Compile
Include=
"Implementation\Library\FindResults\TreeItems\DefinitionTreeItem.cs"
/>
<Compile
Include=
"Implementation\Library\ILibraryService.cs"
/>
<Compile
Include=
"Implementation\Library\ObjectBrowser\ObjectBrowserTaskExtensions.cs"
/>
<Compile
Include=
"Implementation\Library\VsNavInfo\NavInfoNodeEnum.cs"
/>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录