Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
0ac4b318
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,发现更多精彩内容 >>
提交
0ac4b318
编写于
5月 20, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Simplifications in textModelSearch.ts
上级
f151b3ef
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
53 deletion
+17
-53
src/vs/editor/common/model/textModelSearch.ts
src/vs/editor/common/model/textModelSearch.ts
+17
-53
未找到文件。
src/vs/editor/common/model/textModelSearch.ts
浏览文件 @
0ac4b318
...
...
@@ -192,11 +192,7 @@ export class TextModelSearch {
let
m
:
RegExpExecArray
;
searcher
.
reset
(
0
);
while
((
m
=
searcher
.
next
(
text
)))
{
result
[
counter
++
]
=
createFindMatch
(
this
.
_getMultilineMatchRange
(
model
,
deltaOffset
,
text
,
m
.
index
,
m
[
0
]),
m
,
captureMatches
);
result
[
counter
++
]
=
createFindMatch
(
this
.
_getMultilineMatchRange
(
model
,
deltaOffset
,
text
,
m
.
index
,
m
[
0
]),
m
,
captureMatches
);
if
(
counter
>=
limitResultCount
)
{
return
result
;
}
...
...
@@ -244,8 +240,7 @@ export class TextModelSearch {
let
lastMatchIndex
=
-
searchStringLen
;
while
((
lastMatchIndex
=
text
.
indexOf
(
searchString
,
lastMatchIndex
+
searchStringLen
))
!==
-
1
)
{
if
(
!
wordSeparators
||
isValidMatch
(
wordSeparators
,
text
,
textLength
,
lastMatchIndex
,
searchStringLen
))
{
const
range
=
new
Range
(
lineNumber
,
lastMatchIndex
+
1
+
deltaOffset
,
lineNumber
,
lastMatchIndex
+
1
+
searchStringLen
+
deltaOffset
);
result
[
resultLen
++
]
=
new
FindMatch
(
range
,
null
);
result
[
resultLen
++
]
=
new
FindMatch
(
new
Range
(
lineNumber
,
lastMatchIndex
+
1
+
deltaOffset
,
lineNumber
,
lastMatchIndex
+
1
+
searchStringLen
+
deltaOffset
),
null
);
if
(
resultLen
>=
limitResultCount
)
{
return
resultLen
;
}
...
...
@@ -261,20 +256,10 @@ export class TextModelSearch {
do
{
m
=
searcher
.
next
(
text
);
if
(
m
)
{
const
matchStartIndex
=
m
.
index
;
const
matchLength
=
m
[
0
].
length
;
const
range
=
new
Range
(
lineNumber
,
matchStartIndex
+
1
+
deltaOffset
,
lineNumber
,
matchStartIndex
+
1
+
matchLength
+
deltaOffset
);
result
[
resultLen
++
]
=
createFindMatch
(
range
,
m
,
captureMatches
);
result
[
resultLen
++
]
=
createFindMatch
(
new
Range
(
lineNumber
,
m
.
index
+
1
+
deltaOffset
,
lineNumber
,
m
.
index
+
1
+
m
[
0
].
length
+
deltaOffset
),
m
,
captureMatches
);
if
(
resultLen
>=
limitResultCount
)
{
return
resultLen
;
}
if
(
matchStartIndex
+
matchLength
===
text
.
length
)
{
// Reached the end of the line
return
resultLen
;
}
}
}
while
(
m
);
return
resultLen
;
...
...
@@ -414,15 +399,7 @@ export class TextModelSearch {
let
m
:
RegExpExecArray
;
searcher
.
reset
(
0
);
while
((
m
=
searcher
.
next
(
text
)))
{
const
result
=
new
Range
(
lineNumber
,
m
.
index
+
1
,
lineNumber
,
m
.
index
+
1
+
m
[
0
].
length
);
if
(
bestResult
&&
result
.
equalsRange
(
bestResult
.
range
))
{
break
;
}
bestResult
=
createFindMatch
(
result
,
m
,
captureMatches
);
if
(
m
.
index
+
m
[
0
].
length
===
text
.
length
)
{
// Reached the end of the line
break
;
}
bestResult
=
createFindMatch
(
new
Range
(
lineNumber
,
m
.
index
+
1
,
lineNumber
,
m
.
index
+
1
+
m
[
0
].
length
),
m
,
captureMatches
);
}
return
bestResult
;
}
...
...
@@ -467,23 +444,30 @@ class Searcher {
}
public
next
(
text
:
string
):
RegExpExecArray
{
if
(
!
this
.
_wordSeparators
)
{
return
this
.
_next
(
text
);
}
const
textLength
=
text
.
length
;
let
m
:
RegExpExecArray
;
do
{
m
=
this
.
_next
(
text
);
if
(
this
.
_prevMatchStartIndex
+
this
.
_prevMatchLength
===
textLength
)
{
// Reached the end of the line
return
null
;
}
m
=
this
.
_searchRegex
.
exec
(
text
);
if
(
!
m
)
{
return
null
;
}
const
matchStartIndex
=
m
.
index
;
const
matchLength
=
m
[
0
].
length
;
if
(
matchStartIndex
===
this
.
_prevMatchStartIndex
&&
matchLength
===
this
.
_prevMatchLength
)
{
// Exit early if the regex matches the same range twice
return
null
;
}
this
.
_prevMatchStartIndex
=
matchStartIndex
;
this
.
_prevMatchLength
=
matchLength
;
if
(
isValidMatch
(
this
.
_wordSeparators
,
text
,
textLength
,
matchStartIndex
,
matchLength
))
{
if
(
!
this
.
_wordSeparators
||
isValidMatch
(
this
.
_wordSeparators
,
text
,
textLength
,
matchStartIndex
,
matchLength
))
{
return
m
;
}
...
...
@@ -491,24 +475,4 @@ class Searcher {
return
null
;
}
private
_next
(
text
:
string
):
RegExpExecArray
{
const
m
=
this
.
_searchRegex
.
exec
(
text
);
if
(
!
m
)
{
return
null
;
}
const
matchStartIndex
=
m
.
index
;
const
matchLength
=
m
[
0
].
length
;
if
(
matchStartIndex
===
this
.
_prevMatchStartIndex
&&
matchLength
===
this
.
_prevMatchLength
)
{
// Exit early if the regex matches the same range
return
null
;
}
this
.
_prevMatchStartIndex
=
matchStartIndex
;
this
.
_prevMatchLength
=
matchLength
;
return
m
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录