Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
2dcd9245
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2dcd9245
编写于
1月 25, 2016
作者:
J
Joao Moreno
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
suggest: filter in the model #1923
上级
200e1cf7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
32 addition
and
34 deletion
+32
-34
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
+32
-34
未找到文件。
src/vs/editor/contrib/suggest/browser/suggestWidget.ts
浏览文件 @
2dcd9245
...
...
@@ -88,12 +88,19 @@ class CompletionItem {
)
.
then
(()
=>
this
);
}
filter
():
boolean
{
const
filter
=
this
.
group
.
filter
;
const
currentWord
=
this
.
group
.
model
.
currentWord
;
this
.
highlights
=
filter
(
currentWord
,
this
.
suggestion
);
return
!
isFalsyOrEmpty
(
this
.
highlights
);
}
}
class
CompletionGroup
{
incomplete
:
boolean
;
items
:
CompletionItem
[];
private
_
items
:
CompletionItem
[];
size
:
number
;
filter
:
ISuggestionFilter
;
...
...
@@ -101,7 +108,7 @@ class CompletionGroup {
this
.
incomplete
=
false
;
this
.
size
=
0
;
this
.
items
=
raw
.
reduce
<
CompletionItem
[]
>
((
items
,
result
)
=>
{
this
.
_
items
=
raw
.
reduce
<
CompletionItem
[]
>
((
items
,
result
)
=>
{
this
.
incomplete
=
result
.
incomplete
||
this
.
incomplete
;
this
.
size
+=
result
.
suggestions
.
length
;
...
...
@@ -113,8 +120,8 @@ class CompletionGroup {
this
.
filter
=
DefaultFilter
;
if
(
this
.
items
.
length
>
0
)
{
const
[
first
]
=
this
.
items
;
if
(
this
.
_
items
.
length
>
0
)
{
const
[
first
]
=
this
.
_
items
;
if
(
first
.
support
)
{
this
.
filter
=
first
.
support
.
getFilter
&&
first
.
support
.
getFilter
()
||
this
.
filter
;
...
...
@@ -122,8 +129,8 @@ class CompletionGroup {
}
}
get
visibleCount
():
number
{
return
this
.
items
.
reduce
((
r
,
i
)
=>
r
+
(
isFalsyOrEmpty
(
this
.
filter
(
this
.
model
.
currentWord
,
i
.
suggestion
))
?
0
:
1
),
0
);
get
items
():
CompletionItem
[]
{
return
this
.
_items
.
filter
(
i
=>
i
.
filter
()
);
}
}
...
...
@@ -131,10 +138,10 @@ class CompletionModel {
incomplete
:
boolean
;
size
:
number
;
private
groups
:
CompletionGroup
[];
private
cache
:
CompletionItem
[];
constructor
(
public
raw
:
ISuggestResult2
[][],
p
ublic
currentWord
:
string
)
{
constructor
(
public
raw
:
ISuggestResult2
[][],
p
rivate
_
currentWord
:
string
)
{
this
.
incomplete
=
false
;
this
.
size
=
0
;
...
...
@@ -151,12 +158,21 @@ class CompletionModel {
.
sort
(
completionGroupCompare
);
}
get
items
():
CompletionItem
[]
{
return
this
.
groups
.
reduce
((
r
,
groups
)
=>
r
.
concat
(
groups
.
items
),
[]);
set
currentWord
(
value
:
string
)
{
this
.
_currentWord
=
value
;
this
.
cache
=
null
;
}
get
visibleCount
():
number
{
return
this
.
groups
.
reduce
((
r
,
g
)
=>
r
+
g
.
visibleCount
,
0
);
get
currentWord
():
string
{
return
this
.
_currentWord
;
}
get
items
():
CompletionItem
[]
{
if
(
!
this
.
cache
)
{
this
.
cache
=
this
.
groups
.
reduce
((
r
,
groups
)
=>
r
.
concat
(
groups
.
items
),
[]);
}
return
this
.
cache
;
}
}
...
...
@@ -209,23 +225,6 @@ class Controller extends TreeDefaults.DefaultController {
}
}
class
Filter
implements
Tree
.
IFilter
{
constructor
(
private
getState
:
()
=>
State
)
{
}
isVisible
(
tree
:
Tree
.
ITree
,
element
:
any
):
boolean
{
if
(
isRoot
(
element
))
{
return
false
;
}
const
item
:
CompletionItem
=
element
;
const
filter
=
item
.
group
.
filter
;
const
currentWord
=
item
.
group
.
model
.
currentWord
;
item
.
highlights
=
filter
(
currentWord
,
item
.
suggestion
);
return
!
isFalsyOrEmpty
(
item
.
highlights
);
}
}
interface
IMessageTemplateData
{
element
:
HTMLElement
;
}
...
...
@@ -504,8 +503,7 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable
const
configuration
=
{
renderer
:
this
.
renderer
,
dataSource
:
new
DataSource
(),
controller
:
new
Controller
(),
filter
:
new
Filter
(()
=>
this
.
state
)
controller
:
new
Controller
()
};
const
options
=
{
...
...
@@ -689,12 +687,12 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable
if
(
model
&&
model
.
raw
===
e
.
suggestions
)
{
const
oldCurrentWord
=
model
.
currentWord
;
model
.
currentWord
=
e
.
currentWord
;
visibleCount
=
model
.
visibleCount
;
visibleCount
=
model
.
items
.
length
;
if
(
!
e
.
auto
&&
visibleCount
===
0
)
{
model
.
currentWord
=
oldCurrentWord
;
if
(
model
.
visibleCount
>
0
)
{
if
(
model
.
items
.
length
>
0
)
{
this
.
setState
(
State
.
Frozen
);
}
else
{
this
.
setState
(
State
.
Empty
);
...
...
@@ -706,7 +704,7 @@ export class SuggestWidget implements EditorBrowser.IContentWidget, IDisposable
}
}
else
{
model
=
new
CompletionModel
(
e
.
suggestions
,
e
.
currentWord
);
visibleCount
=
model
.
visibleCount
;
visibleCount
=
model
.
items
.
length
;
promise
=
this
.
tree
.
setInput
(
model
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录