Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
7bc7034b
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,发现更多精彩内容 >>
提交
7bc7034b
编写于
8月 22, 2018
作者:
J
Johannes Rieken
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add filtering for breadcrumbs picker, #55449
上级
fa796356
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
60 addition
and
4 deletion
+60
-4
src/vs/workbench/browser/parts/editor/breadcrumbs.ts
src/vs/workbench/browser/parts/editor/breadcrumbs.ts
+5
-2
src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts
src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts
+55
-2
未找到文件。
src/vs/workbench/browser/parts/editor/breadcrumbs.ts
浏览文件 @
7bc7034b
...
@@ -15,6 +15,7 @@ import { Emitter, Event } from 'vs/base/common/event';
...
@@ -15,6 +15,7 @@ import { Emitter, Event } from 'vs/base/common/event';
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
Registry
}
from
'
vs/platform/registry/common/platform
'
;
import
{
IConfigurationRegistry
,
Extensions
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
IConfigurationRegistry
,
Extensions
}
from
'
vs/platform/configuration/common/configurationRegistry
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
*
as
glob
from
'
vs/base/common/glob
'
;
export
const
IBreadcrumbsService
=
createDecorator
<
IBreadcrumbsService
>
(
'
IEditorBreadcrumbsService
'
);
export
const
IBreadcrumbsService
=
createDecorator
<
IBreadcrumbsService
>
(
'
IEditorBreadcrumbsService
'
);
...
@@ -59,8 +60,8 @@ export abstract class BreadcrumbsConfig<T> {
...
@@ -59,8 +60,8 @@ export abstract class BreadcrumbsConfig<T> {
name
:
string
;
name
:
string
;
onDidChange
:
Event
<
void
>
;
onDidChange
:
Event
<
void
>
;
abstract
getValue
():
T
;
abstract
getValue
(
overrides
?:
IConfigurationOverrides
):
T
;
abstract
updateValue
(
value
:
T
):
Thenable
<
void
>
;
abstract
updateValue
(
value
:
T
,
overrides
?:
IConfigurationOverrides
):
Thenable
<
void
>
;
abstract
dispose
():
void
;
abstract
dispose
():
void
;
private
constructor
()
{
private
constructor
()
{
...
@@ -72,6 +73,8 @@ export abstract class BreadcrumbsConfig<T> {
...
@@ -72,6 +73,8 @@ export abstract class BreadcrumbsConfig<T> {
static
FilePath
=
BreadcrumbsConfig
.
_stub
<
'
on
'
|
'
off
'
|
'
last
'
>
(
'
breadcrumbs.filePath
'
);
static
FilePath
=
BreadcrumbsConfig
.
_stub
<
'
on
'
|
'
off
'
|
'
last
'
>
(
'
breadcrumbs.filePath
'
);
static
SymbolPath
=
BreadcrumbsConfig
.
_stub
<
'
on
'
|
'
off
'
|
'
last
'
>
(
'
breadcrumbs.symbolPath
'
);
static
SymbolPath
=
BreadcrumbsConfig
.
_stub
<
'
on
'
|
'
off
'
|
'
last
'
>
(
'
breadcrumbs.symbolPath
'
);
static
FileExcludes
=
BreadcrumbsConfig
.
_stub
<
glob
.
IExpression
>
(
'
files.exclude
'
);
private
static
_stub
<
T
>
(
name
:
string
):
{
bindTo
(
service
:
IConfigurationService
):
BreadcrumbsConfig
<
T
>
}
{
private
static
_stub
<
T
>
(
name
:
string
):
{
bindTo
(
service
:
IConfigurationService
):
BreadcrumbsConfig
<
T
>
}
{
return
{
return
{
bindTo
(
service
)
{
bindTo
(
service
)
{
...
...
src/vs/workbench/browser/parts/editor/breadcrumbsPicker.ts
浏览文件 @
7bc7034b
...
@@ -9,10 +9,10 @@ import * as dom from 'vs/base/browser/dom';
...
@@ -9,10 +9,10 @@ import * as dom from 'vs/base/browser/dom';
import
{
compareFileNames
}
from
'
vs/base/common/comparers
'
;
import
{
compareFileNames
}
from
'
vs/base/common/comparers
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
dispose
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
dispose
,
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
dirname
,
isEqual
}
from
'
vs/base/common/resources
'
;
import
{
dirname
,
isEqual
,
basename
}
from
'
vs/base/common/resources
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
URI
from
'
vs/base/common/uri
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
IDataSource
,
IRenderer
,
ISelectionEvent
,
ISorter
,
ITree
}
from
'
vs/base/parts/tree/browser/tree
'
;
import
{
IDataSource
,
IRenderer
,
ISelectionEvent
,
ISorter
,
ITree
,
IFilter
}
from
'
vs/base/parts/tree/browser/tree
'
;
import
'
vs/css!./media/breadcrumbscontrol
'
;
import
'
vs/css!./media/breadcrumbscontrol
'
;
import
{
OutlineElement
,
OutlineModel
,
TreeElement
}
from
'
vs/editor/contrib/documentSymbols/outlineModel
'
;
import
{
OutlineElement
,
OutlineModel
,
TreeElement
}
from
'
vs/editor/contrib/documentSymbols/outlineModel
'
;
import
{
OutlineDataSource
,
OutlineItemComparator
,
OutlineRenderer
}
from
'
vs/editor/contrib/documentSymbols/outlineTree
'
;
import
{
OutlineDataSource
,
OutlineItemComparator
,
OutlineRenderer
}
from
'
vs/editor/contrib/documentSymbols/outlineTree
'
;
...
@@ -28,6 +28,9 @@ import { breadcrumbsPickerBackground, widgetShadow } from 'vs/platform/theme/com
...
@@ -28,6 +28,9 @@ import { breadcrumbsPickerBackground, widgetShadow } from 'vs/platform/theme/com
import
{
FuzzyScore
,
createMatches
,
fuzzyScore
}
from
'
vs/base/common/filters
'
;
import
{
FuzzyScore
,
createMatches
,
fuzzyScore
}
from
'
vs/base/common/filters
'
;
import
{
IWorkspaceContextService
,
IWorkspace
,
IWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
IWorkspace
,
IWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
BreadcrumbsConfig
}
from
'
vs/workbench/browser/parts/editor/breadcrumbs
'
;
import
*
as
glob
from
'
vs/base/common/glob
'
;
import
{
}
from
'
vs/base/common/paths
'
;
export
function
createBreadcrumbsPicker
(
instantiationService
:
IInstantiationService
,
parent
:
HTMLElement
,
element
:
BreadcrumbElement
):
BreadcrumbsPicker
{
export
function
createBreadcrumbsPicker
(
instantiationService
:
IInstantiationService
,
parent
:
HTMLElement
,
element
:
BreadcrumbElement
):
BreadcrumbsPicker
{
let
ctor
:
IConstructorSignature1
<
HTMLElement
,
BreadcrumbsPicker
>
=
element
instanceof
FileElement
?
BreadcrumbsFilePicker
:
BreadcrumbsOutlinePicker
;
let
ctor
:
IConstructorSignature1
<
HTMLElement
,
BreadcrumbsPicker
>
=
element
instanceof
FileElement
?
BreadcrumbsFilePicker
:
BreadcrumbsOutlinePicker
;
...
@@ -203,6 +206,52 @@ export class FileDataSource implements IDataSource {
...
@@ -203,6 +206,52 @@ export class FileDataSource implements IDataSource {
}
}
}
}
export
class
FileFilter
implements
IFilter
{
private
readonly
_cachedExpressions
=
new
Map
<
string
,
glob
.
ParsedExpression
>
();
private
readonly
_disposables
:
IDisposable
[]
=
[];
constructor
(
@
IWorkspaceContextService
private
readonly
_workspaceService
:
IWorkspaceContextService
,
@
IConfigurationService
configService
:
IConfigurationService
,
)
{
const
config
=
BreadcrumbsConfig
.
FileExcludes
.
bindTo
(
configService
);
const
update
=
()
=>
{
_workspaceService
.
getWorkspace
().
folders
.
forEach
(
folder
=>
{
const
excludesConfig
=
config
.
getValue
({
resource
:
folder
.
uri
});
if
(
excludesConfig
)
{
this
.
_cachedExpressions
.
set
(
folder
.
uri
.
toString
(),
glob
.
parse
(
excludesConfig
));
}
});
};
update
();
this
.
_disposables
.
push
(
config
,
config
.
onDidChange
(
update
),
_workspaceService
.
onDidChangeWorkspaceFolders
(
update
)
);
}
dispose
():
void
{
dispose
(
this
.
_disposables
);
}
isVisible
(
tree
:
ITree
,
element
:
IWorkspaceFolder
|
IFileStat
):
boolean
{
if
(
IWorkspaceFolder
.
isIWorkspaceFolder
(
element
))
{
// not a file
return
true
;
}
const
folder
=
this
.
_workspaceService
.
getWorkspaceFolder
(
element
.
resource
);
if
(
!
folder
||
!
this
.
_cachedExpressions
.
has
(
folder
.
uri
.
toString
()))
{
// no folder or no filer
return
true
;
}
const
expression
=
this
.
_cachedExpressions
.
get
(
folder
.
uri
.
toString
());
return
!
expression
(
element
.
resource
.
path
.
substr
(
folder
.
uri
.
path
.
length
),
basename
(
element
.
resource
));
}
}
export
class
FileRenderer
implements
IRenderer
,
IHighlightingRenderer
{
export
class
FileRenderer
implements
IRenderer
,
IHighlightingRenderer
{
private
readonly
_scores
=
new
Map
<
string
,
FuzzyScore
>
();
private
readonly
_scores
=
new
Map
<
string
,
FuzzyScore
>
();
...
@@ -317,9 +366,13 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
...
@@ -317,9 +366,13 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
protected
_completeTreeConfiguration
(
config
:
IHighlightingTreeConfiguration
):
IHighlightingTreeConfiguration
{
protected
_completeTreeConfiguration
(
config
:
IHighlightingTreeConfiguration
):
IHighlightingTreeConfiguration
{
// todo@joh reuse explorer implementations?
// todo@joh reuse explorer implementations?
const
filter
=
this
.
_instantiationService
.
createInstance
(
FileFilter
);
this
.
_disposables
.
push
(
filter
);
config
.
dataSource
=
this
.
_instantiationService
.
createInstance
(
FileDataSource
);
config
.
dataSource
=
this
.
_instantiationService
.
createInstance
(
FileDataSource
);
config
.
renderer
=
this
.
_instantiationService
.
createInstance
(
FileRenderer
);
config
.
renderer
=
this
.
_instantiationService
.
createInstance
(
FileRenderer
);
config
.
sorter
=
new
FileSorter
();
config
.
sorter
=
new
FileSorter
();
config
.
filter
=
filter
;
return
config
;
return
config
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录