Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
10ef7cf1
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,发现更多精彩内容 >>
提交
10ef7cf1
编写于
7月 24, 2016
作者:
C
CyrusNajmabadi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Trim common path elements for C#/VB find references, just like we do for TypeScript.
上级
36670bb3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
29 addition
and
8 deletion
+29
-8
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_FindReferences.cs
...tion/Library/FindResults/LibraryManager_FindReferences.cs
+19
-4
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_GoToDefinition.cs
...tion/Library/FindResults/LibraryManager_GoToDefinition.cs
+7
-3
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/SourceReferenceTreeItem.cs
.../Library/FindResults/TreeItems/SourceReferenceTreeItem.cs
+3
-1
未找到文件。
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_FindReferences.cs
浏览文件 @
10ef7cf1
...
...
@@ -21,12 +21,19 @@ public void PresentReferencedSymbols(string title, Solution solution, IEnumerabl
}
// internal for test purposes
internal
IList
<
AbstractTreeItem
>
CreateFindReferencesItems
(
Solution
solution
,
IEnumerable
<
ReferencedSymbol
>
referencedSymbols
)
internal
IList
<
AbstractTreeItem
>
CreateFindReferencesItems
(
Solution
solution
,
IEnumerable
<
ReferencedSymbol
>
referencedSymbols
)
{
var
definitions
=
new
List
<
AbstractTreeItem
>();
var
uniqueLocations
=
new
HashSet
<
ValueTuple
<
Document
,
TextSpan
>>();
var
symbolNavigationService
=
solution
.
Workspace
.
Services
.
GetService
<
ISymbolNavigationService
>();
var
documents
=
referencedSymbols
.
SelectMany
(
s
=>
s
.
Locations
)
.
Select
(
loc
=>
loc
.
Document
)
.
WhereNotNull
()
.
ToSet
();
var
commonPathElements
=
CountCommonPathElements
(
documents
);
referencedSymbols
=
referencedSymbols
.
FilterToItemsToShow
().
ToList
();
foreach
(
var
referencedSymbol
in
referencedSymbols
.
OrderBy
(
GetDefinitionPrecedence
))
...
...
@@ -56,7 +63,10 @@ internal IList<AbstractTreeItem> CreateFindReferencesItems(Solution solution, IE
{
definitions
.
Add
(
definitionItem
);
var
referenceItems
=
CreateReferenceItems
(
solution
,
uniqueLocations
,
referencedSymbol
.
Locations
.
Select
(
loc
=>
loc
.
Location
));
var
referenceItems
=
CreateReferenceItems
(
solution
,
uniqueLocations
,
referencedSymbol
.
Locations
.
Select
(
loc
=>
loc
.
Location
),
commonPathElements
);
definitionItem
.
Children
.
AddRange
(
referenceItems
);
definitionItem
.
SetReferenceCount
(
referenceItems
.
Count
);
}
...
...
@@ -136,7 +146,11 @@ private int GetDefinitionPrecedence(ReferencedSymbol referencedSymbol)
return
new
SourceDefinitionTreeItem
(
document
,
sourceSpan
,
referencedSymbol
.
Definition
,
glyph
.
GetGlyphIndex
());
}
private
IList
<
SourceReferenceTreeItem
>
CreateReferenceItems
(
Solution
solution
,
HashSet
<
ValueTuple
<
Document
,
TextSpan
>>
uniqueLocations
,
IEnumerable
<
Location
>
locations
)
private
IList
<
SourceReferenceTreeItem
>
CreateReferenceItems
(
Solution
solution
,
HashSet
<
ValueTuple
<
Document
,
TextSpan
>>
uniqueLocations
,
IEnumerable
<
Location
>
locations
,
int
commonPathElements
)
{
var
referenceItems
=
new
List
<
SourceReferenceTreeItem
>();
foreach
(
var
location
in
locations
)
...
...
@@ -155,7 +169,8 @@ private IList<SourceReferenceTreeItem> CreateReferenceItems(Solution solution, H
if
(
uniqueLocations
.
Add
(
new
ValueTuple
<
Document
,
TextSpan
>(
document
,
sourceSpan
)))
{
referenceItems
.
Add
(
new
SourceReferenceTreeItem
(
document
,
sourceSpan
,
Glyph
.
Reference
.
GetGlyphIndex
()));
referenceItems
.
Add
(
new
SourceReferenceTreeItem
(
document
,
sourceSpan
,
Glyph
.
Reference
.
GetGlyphIndex
(),
commonPathElements
));
}
}
...
...
src/VisualStudio/Core/Def/Implementation/Library/FindResults/LibraryManager_GoToDefinition.cs
浏览文件 @
10ef7cf1
// 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
;
using
System.Collections.Generic
;
using
System.Diagnostics
;
using
System.Linq
;
...
...
@@ -32,10 +31,15 @@ private IList<AbstractTreeItem> CreateNavigableItemTreeItems(IEnumerable<INaviga
return
CreateNavigableItemTreeItems
(
itemsList
,
commonPathElements
);
}
private
int
CountCommonPathElements
(
Hash
Set
<
Document
>
documents
)
private
int
CountCommonPathElements
(
I
Set
<
Document
>
documents
)
{
Debug
.
Assert
(
documents
.
Count
>
0
);
if
(
documents
.
Count
==
0
)
{
return
0
;
}
var
commonPathElements
=
0
;
for
(
var
index
=
0
;
;
index
++)
{
var
pathPortion
=
GetPathPortion
(
documents
.
First
(),
index
);
...
...
src/VisualStudio/Core/Def/Implementation/Library/FindResults/TreeItems/SourceReferenceTreeItem.cs
浏览文件 @
10ef7cf1
...
...
@@ -9,7 +9,9 @@ namespace Microsoft.VisualStudio.LanguageServices.Implementation.Library.FindRes
{
internal
class
SourceReferenceTreeItem
:
AbstractSourceTreeItem
,
IComparable
<
SourceReferenceTreeItem
>
{
public
SourceReferenceTreeItem
(
Document
document
,
TextSpan
sourceSpan
,
ushort
glyphIndex
,
int
commonPathElements
=
0
,
string
displayText
=
null
,
bool
includeFileLocation
=
false
)
public
SourceReferenceTreeItem
(
Document
document
,
TextSpan
sourceSpan
,
ushort
glyphIndex
,
int
commonPathElements
,
string
displayText
=
null
,
bool
includeFileLocation
=
false
)
:
base
(
document
,
sourceSpan
,
glyphIndex
,
commonPathElements
)
{
if
(
displayText
!=
null
&&
!
includeFileLocation
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录