Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
9e80cb2d
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9e80cb2d
编写于
12月 05, 2015
作者:
B
Benjamin Pasero
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reuse one sort function for file related quick open results
上级
2924e2b1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
43 addition
and
82 deletion
+43
-82
src/vs/base/parts/quickopen/browser/quickOpenModel.ts
src/vs/base/parts/quickopen/browser/quickOpenModel.ts
+35
-1
src/vs/workbench/browser/parts/quickopen/editorHistoryModel.ts
...s/workbench/browser/parts/quickopen/editorHistoryModel.ts
+1
-24
src/vs/workbench/parts/search/browser/openAnythingHandler.ts
src/vs/workbench/parts/search/browser/openAnythingHandler.ts
+2
-32
src/vs/workbench/parts/search/browser/openFileHandler.ts
src/vs/workbench/parts/search/browser/openFileHandler.ts
+5
-25
未找到文件。
src/vs/base/parts/quickopen/browser/quickOpenModel.ts
浏览文件 @
9e80cb2d
...
...
@@ -8,9 +8,10 @@ import WinJS = require('vs/base/common/winjs.base');
import
Types
=
require
(
'
vs/base/common/types
'
);
import
URI
from
'
vs/base/common/uri
'
;
import
Tree
=
require
(
'
vs/base/parts/tree/common/tree
'
);
import
{
IQuickNavigateConfiguration
,
IModel
,
IDataSource
,
IFilter
,
IRenderer
,
IRunner
,
Mode
}
from
'
./quickOpen
'
;
import
{
IQuickNavigateConfiguration
,
IModel
,
IDataSource
,
IFilter
,
IRenderer
,
IRunner
,
Mode
}
from
'
./quickOpen
'
;
import
ActionsRenderer
=
require
(
'
vs/base/parts/tree/browser/actionsRenderer
'
);
import
Actions
=
require
(
'
vs/base/common/actions
'
);
import
{
compareAnything
}
from
'
vs/base/common/comparers
'
;
import
ActionBar
=
require
(
'
vs/base/browser/ui/actionbar/actionbar
'
);
import
TreeDefaults
=
require
(
'
vs/base/parts/tree/browser/treeDefaults
'
);
import
HighlightedLabel
=
require
(
'
vs/base/browser/ui/highlightedlabel/highlightedLabel
'
);
...
...
@@ -121,6 +122,39 @@ export class QuickOpenEntry {
public
run
(
mode
:
Mode
,
context
:
IContext
):
boolean
{
return
false
;
}
/**
* A good default sort implementation for quick open entries
*/
public
static
compare
(
elementA
:
QuickOpenEntry
,
elementB
:
QuickOpenEntry
,
lookFor
:
string
):
number
{
// Give matches with label highlights higher priority over
// those with only description highlights
const
labelHighlightsA
=
elementA
.
getHighlights
()[
0
]
||
[];
const
labelHighlightsB
=
elementB
.
getHighlights
()[
0
]
||
[];
if
(
labelHighlightsA
.
length
&&
!
labelHighlightsB
.
length
)
{
return
-
1
;
}
else
if
(
!
labelHighlightsA
.
length
&&
labelHighlightsB
.
length
)
{
return
1
;
}
// Sort by name/path
let
nameA
=
elementA
.
getLabel
();
let
nameB
=
elementB
.
getLabel
();
if
(
nameA
===
nameB
)
{
let
resourceA
=
elementA
.
getResource
();
let
resourceB
=
elementB
.
getResource
();
if
(
resourceA
&&
resourceB
)
{
nameA
=
elementA
.
getResource
().
fsPath
;
nameB
=
elementB
.
getResource
().
fsPath
;
}
}
return
compareAnything
(
nameA
,
nameB
,
lookFor
);
}
}
export
class
QuickOpenEntryItem
extends
QuickOpenEntry
{
...
...
src/vs/workbench/browser/parts/quickopen/editorHistoryModel.ts
浏览文件 @
9e80cb2d
...
...
@@ -245,30 +245,7 @@ export class EditorHistoryModel extends QuickOpenModel {
if
(
searchValue
)
{
let
normalizedSearchValue
=
strings
.
stripWildcards
(
searchValue
.
toLowerCase
());
return
results
.
sort
((
elementA
:
EditorHistoryEntry
,
elementB
:
EditorHistoryEntry
)
=>
{
// Give matches with label highlights higher priority over
// those with only description highlights
const
labelHighlightsA
=
elementA
.
getHighlights
()[
0
]
||
[];
const
labelHighlightsB
=
elementB
.
getHighlights
()[
0
]
||
[];
if
(
labelHighlightsA
.
length
&&
!
labelHighlightsB
.
length
)
{
return
-
1
;
}
else
if
(
!
labelHighlightsA
.
length
&&
labelHighlightsB
.
length
)
{
return
1
;
}
// Sort by name/path
let
nameA
=
elementA
.
getInput
().
getName
();
let
nameB
=
elementB
.
getInput
().
getName
();
if
(
nameA
===
nameB
)
{
nameA
=
elementA
.
getResource
().
fsPath
;
nameB
=
elementB
.
getResource
().
fsPath
;
}
return
comparers
.
compareAnything
(
nameA
,
nameB
,
normalizedSearchValue
);
});
return
results
.
sort
((
elementA
:
EditorHistoryEntry
,
elementB
:
EditorHistoryEntry
)
=>
QuickOpenEntry
.
compare
(
elementA
,
elementB
,
normalizedSearchValue
));
}
// Leave default "most recently used" order if user is not actually searching
...
...
src/vs/workbench/parts/search/browser/openAnythingHandler.ts
浏览文件 @
9e80cb2d
...
...
@@ -141,7 +141,7 @@ export class OpenAnythingHandler extends QuickOpenHandler {
// Sort
let
normalizedSearchValue
=
strings
.
stripWildcards
(
searchValue
.
toLowerCase
());
result
.
sort
((
elementA
,
elementB
)
=>
this
.
compareResults
(
elementA
,
elementB
,
normalizedSearchValue
));
result
.
sort
((
elementA
,
elementB
)
=>
QuickOpenEntry
.
compare
(
elementA
,
elementB
,
normalizedSearchValue
));
// Apply Range
result
.
forEach
((
element
)
=>
{
...
...
@@ -248,7 +248,7 @@ export class OpenAnythingHandler extends QuickOpenHandler {
// Sort
let
normalizedSearchValue
=
strings
.
stripWildcards
(
searchValue
.
toLowerCase
());
results
.
sort
((
elementA
,
elementB
)
=>
this
.
compareResults
(
elementA
,
elementB
,
normalizedSearchValue
));
results
.
sort
((
elementA
,
elementB
)
=>
QuickOpenEntry
.
compare
(
elementA
,
elementB
,
normalizedSearchValue
));
// Apply Range
results
.
forEach
((
element
)
=>
{
...
...
@@ -260,36 +260,6 @@ export class OpenAnythingHandler extends QuickOpenHandler {
return
results
;
}
private
compareResults
(
elementA
:
QuickOpenEntry
,
elementB
:
QuickOpenEntry
,
searchValue
:
string
):
number
{
// Give matches with label highlights higher priority over
// those with only description highlights
const
labelHighlightsA
=
elementA
.
getHighlights
()[
0
]
||
[];
const
labelHighlightsB
=
elementB
.
getHighlights
()[
0
]
||
[];
if
(
labelHighlightsA
.
length
&&
!
labelHighlightsB
.
length
)
{
return
-
1
;
}
else
if
(
!
labelHighlightsA
.
length
&&
labelHighlightsB
.
length
)
{
return
1
;
}
// Sort by name/path
let
nameA
=
elementA
.
getLabel
();
let
nameB
=
elementB
.
getLabel
();
if
(
nameA
===
nameB
)
{
let
resourceA
=
elementA
.
getResource
();
let
resourceB
=
elementB
.
getResource
();
if
(
resourceA
&&
resourceB
)
{
nameA
=
elementA
.
getResource
().
fsPath
;
nameB
=
elementB
.
getResource
().
fsPath
;
}
}
return
compareAnything
(
nameA
,
nameB
,
searchValue
);
}
public
getGroupLabel
():
string
{
return
nls
.
localize
(
'
fileAndTypeResults
'
,
"
file and symbol results
"
);
}
...
...
src/vs/workbench/parts/search/browser/openFileHandler.ts
浏览文件 @
9e80cb2d
...
...
@@ -144,11 +144,7 @@ export class OpenFileHandler extends QuickOpenHandler {
let
searchResult
=
this
.
instantiationService
.
createInstance
(
SearchResult
,
null
);
searchResult
.
append
(
complete
.
results
);
// Sort (standalone only)
let
matches
=
searchResult
.
matches
();
if
(
this
.
isStandalone
)
{
matches
=
matches
.
sort
((
elementA
,
elementB
)
=>
this
.
sort
(
elementA
,
elementB
,
searchValue
.
toLowerCase
()));
}
// Highlight
let
results
:
QuickOpenEntry
[]
=
[];
...
...
@@ -178,31 +174,15 @@ export class OpenFileHandler extends QuickOpenHandler {
results
.
push
(
this
.
instantiationService
.
createInstance
(
FileEntry
,
fileMatch
.
name
(),
description
,
fileMatch
.
resource
(),
labelHighlights
,
descriptionHighlights
));
}
// Sort (standalone only)
if
(
this
.
isStandalone
)
{
results
=
results
.
sort
((
elementA
,
elementB
)
=>
QuickOpenEntry
.
compare
(
elementA
,
elementB
,
searchValue
.
toLowerCase
()));
}
return
results
;
});
}
private
sort
(
elementA
:
FileMatch
,
elementB
:
FileMatch
,
searchValue
:
string
):
number
{
let
elementAName
=
elementA
.
name
().
toLowerCase
();
let
elementBName
=
elementB
.
name
().
toLowerCase
();
// Sort matches that have search value in beginning to the top
let
elementAPrefixMatch
=
elementAName
.
indexOf
(
searchValue
)
===
0
;
let
elementBPrefixMatch
=
elementBName
.
indexOf
(
searchValue
)
===
0
;
if
(
elementAPrefixMatch
!==
elementBPrefixMatch
)
{
return
elementAPrefixMatch
?
-
1
:
1
;
}
// Compare by name
let
r
=
comparers
.
compareFileNames
(
elementAName
,
elementBName
);
if
(
r
!==
0
)
{
return
r
;
}
// Otherwise do full compare with path info
return
strings
.
localeCompare
(
elementA
.
resource
().
fsPath
,
elementB
.
resource
().
fsPath
);
}
public
getGroupLabel
():
string
{
return
nls
.
localize
(
'
searchResults
'
,
"
search results
"
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录