Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
54ca5101
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,发现更多精彩内容 >>
提交
54ca5101
编写于
9月 28, 2017
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #32522: Set multiline flag on regex if replacing more than 1k matches
上级
3b76085a
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
37 addition
and
2 deletion
+37
-2
src/vs/editor/contrib/find/common/findModel.ts
src/vs/editor/contrib/find/common/findModel.ts
+14
-2
src/vs/editor/contrib/find/test/common/findModel.test.ts
src/vs/editor/contrib/find/test/common/findModel.test.ts
+23
-0
未找到文件。
src/vs/editor/contrib/find/common/findModel.ts
浏览文件 @
54ca5101
...
...
@@ -409,6 +409,18 @@ export class FindModelBoundToEditorModel {
return
;
}
let
searchRegex
=
searchData
.
regex
;
if
(
!
searchRegex
.
multiline
)
{
let
mod
=
'
m
'
;
if
(
searchRegex
.
ignoreCase
)
{
mod
+=
'
i
'
;
}
if
(
searchRegex
.
global
)
{
mod
+=
'
g
'
;
}
searchRegex
=
new
RegExp
(
searchRegex
.
source
,
mod
);
}
const
model
=
this
.
_editor
.
getModel
();
const
modelText
=
model
.
getValue
(
editorCommon
.
EndOfLinePreference
.
LF
);
const
fullModelRange
=
model
.
getFullModelRange
();
...
...
@@ -416,11 +428,11 @@ export class FindModelBoundToEditorModel {
const
replacePattern
=
this
.
_getReplacePattern
();
let
resultText
:
string
;
if
(
replacePattern
.
hasReplacementPatterns
)
{
resultText
=
modelText
.
replace
(
search
Data
.
r
egex
,
function
()
{
resultText
=
modelText
.
replace
(
search
R
egex
,
function
()
{
return
replacePattern
.
buildReplaceString
(
<
string
[]
><
any
>
arguments
);
});
}
else
{
resultText
=
modelText
.
replace
(
search
Data
.
r
egex
,
replacePattern
.
buildReplaceString
(
null
));
resultText
=
modelText
.
replace
(
search
R
egex
,
replacePattern
.
buildReplaceString
(
null
));
}
let
command
=
new
ReplaceCommandThatPreservesSelection
(
fullModelRange
,
resultText
,
this
.
_editor
.
getSelection
());
...
...
src/vs/editor/contrib/find/test/common/findModel.test.ts
浏览文件 @
54ca5101
...
...
@@ -2004,6 +2004,29 @@ suite('FindModel', () => {
findState
.
dispose
();
});
findTest
(
'
issue #32522 replaceAll with ^ on more than 1000 matches
'
,
(
editor
,
cursor
)
=>
{
let
initialText
=
''
;
for
(
let
i
=
0
;
i
<
1100
;
i
++
)
{
initialText
+=
'
line
'
+
i
+
'
\n
'
;
}
editor
.
getModel
().
setValue
(
initialText
);
let
findState
=
new
FindReplaceState
();
findState
.
change
({
searchString
:
'
^
'
,
replaceString
:
'
a
'
,
isRegex
:
true
},
false
);
let
findModel
=
new
FindModelBoundToEditorModel
(
editor
,
findState
);
findModel
.
replaceAll
();
let
expectedText
=
''
;
for
(
let
i
=
0
;
i
<
1100
;
i
++
)
{
expectedText
+=
'
a line
'
+
i
+
'
\n
'
;
}
expectedText
+=
'
a
'
;
assert
.
equal
(
editor
.
getModel
().
getValue
(),
expectedText
);
findModel
.
dispose
();
findState
.
dispose
();
});
findTest
(
'
issue #19740 Find and replace capture group/backreference inserts `undefined` instead of empty string
'
,
(
editor
,
cursor
)
=>
{
let
findState
=
new
FindReplaceState
();
findState
.
change
({
searchString
:
'
hello(z)?
'
,
replaceString
:
'
hi$1
'
,
isRegex
:
true
,
matchCase
:
true
},
false
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录