Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
616201ef
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,发现更多精彩内容 >>
提交
616201ef
编写于
6月 27, 2016
作者:
K
kieferrm
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of github.com:Microsoft/vscode
上级
e33e9a83
21c72165
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
17 addition
and
7 deletion
+17
-7
src/vs/workbench/parts/search/common/searchModel.ts
src/vs/workbench/parts/search/common/searchModel.ts
+14
-5
src/vs/workbench/parts/search/test/common/searchModel.test.ts
...vs/workbench/parts/search/test/common/searchModel.test.ts
+3
-2
未找到文件。
src/vs/workbench/parts/search/common/searchModel.ts
浏览文件 @
616201ef
...
...
@@ -7,6 +7,7 @@
import
{
RunOnceScheduler
}
from
'
vs/base/common/async
'
;
import
strings
=
require
(
'
vs/base/common/strings
'
);
import
URI
from
'
vs/base/common/uri
'
;
import
*
as
Set
from
'
vs/base/common/set
'
;
import
paths
=
require
(
'
vs/base/common/paths
'
);
import
lifecycle
=
require
(
'
vs/base/common/lifecycle
'
);
import
collections
=
require
(
'
vs/base/common/collections
'
);
...
...
@@ -72,6 +73,7 @@ export class FileMatch extends EventEmitter implements lifecycle.IDisposable {
private
_parent
:
SearchResult
;
private
_resource
:
URI
;
_removedMatches
:
Set
.
ArraySet
<
string
>
;
_matches
:
{
[
key
:
string
]:
Match
};
constructor
(
parent
:
SearchResult
,
resource
:
URI
)
{
...
...
@@ -79,6 +81,7 @@ export class FileMatch extends EventEmitter implements lifecycle.IDisposable {
this
.
_resource
=
resource
;
this
.
_parent
=
parent
;
this
.
_matches
=
Object
.
create
(
null
);
this
.
_removedMatches
=
new
Set
.
ArraySet
<
string
>
();
}
public
dispose
():
void
{
...
...
@@ -99,6 +102,7 @@ export class FileMatch extends EventEmitter implements lifecycle.IDisposable {
public
remove
(
match
:
Match
):
void
{
delete
this
.
_matches
[
match
.
id
()];
this
.
_removedMatches
.
set
(
match
.
id
());
if
(
this
.
count
()
===
0
)
{
this
.
add
(
new
EmptyMatch
(
this
));
}
...
...
@@ -156,7 +160,7 @@ export class LiveFileMatch extends FileMatch implements lifecycle.IDisposable {
this
.
_diskFileMatch
=
fileMatch
;
this
.
_updateScheduler
=
new
RunOnceScheduler
(
this
.
_updateMatches
.
bind
(
this
),
250
);
this
.
_unbind
.
push
(
this
.
_model
.
onDidChangeContent
(
_
=>
this
.
_updateScheduler
.
schedule
()));
this
.
_updateMatches
();
this
.
_updateMatches
(
fileMatch
);
}
public
dispose
():
void
{
...
...
@@ -167,7 +171,7 @@ export class LiveFileMatch extends FileMatch implements lifecycle.IDisposable {
super
.
dispose
();
}
private
_updateMatches
():
void
{
private
_updateMatches
(
fileMatch
?:
FileMatch
):
void
{
// this is called from a timeout and might fire
// after the model has been disposed
if
(
this
.
_isTextModelDisposed
())
{
...
...
@@ -177,10 +181,15 @@ export class LiveFileMatch extends FileMatch implements lifecycle.IDisposable {
let
matches
=
this
.
_model
.
findMatches
(
this
.
_query
.
pattern
,
this
.
_model
.
getFullModelRange
(),
this
.
_query
.
isRegExp
,
this
.
_query
.
isCaseSensitive
,
this
.
_query
.
isWordMatch
);
if
(
matches
.
length
===
0
)
{
matches
.
forEach
(
range
=>
{
let
match
=
new
Match
(
this
,
this
.
_model
.
getLineContent
(
range
.
startLineNumber
),
range
.
startLineNumber
-
1
,
range
.
startColumn
-
1
,
range
.
endColumn
-
range
.
startColumn
);
if
(
!
(
fileMatch
&&
fileMatch
.
_removedMatches
.
contains
(
match
.
id
())))
{
this
.
add
(
match
);
}
});
if
(
this
.
count
()
===
0
)
{
this
.
add
(
new
EmptyMatch
(
this
));
}
else
{
matches
.
forEach
(
range
=>
this
.
add
(
new
Match
(
this
,
this
.
_model
.
getLineContent
(
range
.
startLineNumber
),
range
.
startLineNumber
-
1
,
range
.
startColumn
-
1
,
range
.
endColumn
-
range
.
startColumn
)));
}
this
.
parent
().
emit
(
'
changed
'
,
this
);
...
...
src/vs/workbench/parts/search/test/common/searchModel.test.ts
浏览文件 @
616201ef
...
...
@@ -5,7 +5,7 @@
'
use strict
'
;
import
*
as
assert
from
'
assert
'
;
import
{
Match
,
FileMatch
,
SearchResult
}
from
'
vs/workbench/parts/search/common/searchModel
'
;
import
{
Match
,
FileMatch
,
SearchResult
,
EmptyMatch
}
from
'
vs/workbench/parts/search/common/searchModel
'
;
import
{
Model
}
from
'
vs/editor/common/model/model
'
;
import
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IModel
}
from
'
vs/editor/common/editorCommon
'
;
...
...
@@ -64,7 +64,8 @@ suite('Search - Model', () => {
fileMatch
.
add
(
lineMatch
);
assert
.
equal
(
fileMatch
.
matches
().
length
,
1
);
fileMatch
.
remove
(
lineMatch
);
assert
.
equal
(
fileMatch
.
matches
().
length
,
0
);
assert
.
equal
(
fileMatch
.
matches
().
length
,
1
);
assert
.
ok
(
fileMatch
.
matches
()[
0
]
instanceof
EmptyMatch
);
});
test
(
'
File Match
'
,
function
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录