Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
846dde8d
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,发现更多精彩内容 >>
提交
846dde8d
编写于
8月 11, 2020
作者:
R
rebornix
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add more tests.
上级
1bea0386
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
65 addition
and
1 deletion
+65
-1
src/vs/editor/common/model/textModel.ts
src/vs/editor/common/model/textModel.ts
+13
-1
src/vs/editor/contrib/find/test/findModel.test.ts
src/vs/editor/contrib/find/test/findModel.test.ts
+52
-0
未找到文件。
src/vs/editor/common/model/textModel.ts
浏览文件 @
846dde8d
...
...
@@ -1137,6 +1137,18 @@ export class TextModel extends Disposable implements model.ITextModel {
searchRanges
=
[
this
.
getFullModelRange
()];
}
searchRanges
=
searchRanges
.
sort
((
d1
,
d2
)
=>
d1
.
startLineNumber
-
d2
.
startLineNumber
||
d1
.
startColumn
-
d2
.
startColumn
);
const
uniqueSearchRanges
:
Range
[]
=
[];
uniqueSearchRanges
.
push
(
searchRanges
.
reduce
((
prev
,
curr
)
=>
{
if
(
Range
.
areIntersecting
(
prev
,
curr
))
{
return
prev
.
plusRange
(
curr
);
}
uniqueSearchRanges
.
push
(
prev
);
return
curr
;
}));
let
matchMapper
:
(
value
:
Range
,
index
:
number
,
array
:
Range
[])
=>
model
.
FindMatch
[];
if
(
!
isRegex
&&
searchString
.
indexOf
(
'
\n
'
)
<
0
)
{
// not regex, not multi line
...
...
@@ -1152,7 +1164,7 @@ export class TextModel extends Disposable implements model.ITextModel {
matchMapper
=
(
searchRange
:
Range
)
=>
TextModelSearch
.
findMatches
(
this
,
new
SearchParams
(
searchString
,
isRegex
,
matchCase
,
wordSeparators
),
searchRange
,
captureMatches
,
limitResultCount
);
}
return
s
earchRanges
.
map
(
matchMapper
).
reduce
((
arr
,
matches
:
model
.
FindMatch
[])
=>
arr
.
concat
(
matches
),
[]);
return
uniqueS
earchRanges
.
map
(
matchMapper
).
reduce
((
arr
,
matches
:
model
.
FindMatch
[])
=>
arr
.
concat
(
matches
),
[]);
}
public
findNextMatch
(
searchString
:
string
,
rawSearchStart
:
IPosition
,
isRegex
:
boolean
,
matchCase
:
boolean
,
wordSeparators
:
string
,
captureMatches
:
boolean
):
model
.
FindMatch
|
null
{
...
...
src/vs/editor/contrib/find/test/findModel.test.ts
浏览文件 @
846dde8d
...
...
@@ -493,6 +493,58 @@ suite('FindModel', () => {
findState
.
dispose
();
});
findTest
(
'
multi-selection find model next stays in scope (overlap)
'
,
(
editor
)
=>
{
let
findState
=
new
FindReplaceState
();
findState
.
change
({
searchString
:
'
hello
'
,
wholeWord
:
true
,
searchScope
:
[
new
Range
(
7
,
1
,
8
,
2
),
new
Range
(
8
,
1
,
9
,
1
)]
},
false
);
let
findModel
=
new
FindModelBoundToEditorModel
(
editor
,
findState
);
assertFindState
(
editor
,
[
1
,
1
,
1
,
1
],
null
,
[
[
7
,
14
,
7
,
19
],
[
8
,
14
,
8
,
19
]
]
);
findModel
.
moveToNextMatch
();
assertFindState
(
editor
,
[
7
,
14
,
7
,
19
],
[
7
,
14
,
7
,
19
],
[
[
7
,
14
,
7
,
19
],
[
8
,
14
,
8
,
19
]
]
);
findModel
.
moveToNextMatch
();
assertFindState
(
editor
,
[
8
,
14
,
8
,
19
],
[
8
,
14
,
8
,
19
],
[
[
7
,
14
,
7
,
19
],
[
8
,
14
,
8
,
19
]
]
);
findModel
.
moveToNextMatch
();
assertFindState
(
editor
,
[
7
,
14
,
7
,
19
],
[
7
,
14
,
7
,
19
],
[
[
7
,
14
,
7
,
19
],
[
8
,
14
,
8
,
19
]
]
);
findModel
.
dispose
();
findState
.
dispose
();
});
findTest
(
'
multi-selection find model next stays in scope
'
,
(
editor
)
=>
{
let
findState
=
new
FindReplaceState
();
findState
.
change
({
searchString
:
'
hello
'
,
matchCase
:
true
,
wholeWord
:
false
,
searchScope
:
[
new
Range
(
6
,
1
,
7
,
38
),
new
Range
(
9
,
3
,
9
,
38
)]
},
false
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录