Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
e81c1d38
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,发现更多精彩内容 >>
提交
e81c1d38
编写于
10月 30, 2017
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #35192
上级
85e479f1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
3 deletion
+24
-3
src/vs/workbench/services/search/node/ripgrepTextSearch.ts
src/vs/workbench/services/search/node/ripgrepTextSearch.ts
+24
-3
未找到文件。
src/vs/workbench/services/search/node/ripgrepTextSearch.ts
浏览文件 @
e81c1d38
...
...
@@ -74,7 +74,7 @@ export class RipgrepEngine {
this
.
rgProc
=
cp
.
spawn
(
rgPath
,
rgArgs
.
globArgs
,
{
cwd
});
process
.
once
(
'
exit
'
,
this
.
killRgProcFn
);
this
.
ripgrepParser
=
new
RipgrepParser
(
this
.
config
.
maxResults
,
cwd
);
this
.
ripgrepParser
=
new
RipgrepParser
(
this
.
config
.
maxResults
,
cwd
,
this
.
config
.
extraFiles
);
this
.
ripgrepParser
.
on
(
'
result
'
,
(
match
:
ISerializedFileMatch
)
=>
{
if
(
this
.
postProcessExclusions
)
{
const
handleResultP
=
(
<
TPromise
<
string
>>
this
.
postProcessExclusions
(
match
.
path
,
undefined
,
()
=>
getSiblings
(
match
.
path
)))
...
...
@@ -170,12 +170,15 @@ export class RipgrepParser extends EventEmitter {
private
remainder
:
string
;
private
isDone
:
boolean
;
private
stringDecoder
:
NodeStringDecoder
;
private
extraSearchFiles
:
string
[];
private
numResults
=
0
;
constructor
(
private
maxResults
:
number
,
private
rootFolder
:
string
)
{
constructor
(
private
maxResults
:
number
,
private
rootFolder
:
string
,
extraFiles
?:
string
[]
)
{
super
();
this
.
stringDecoder
=
new
StringDecoder
();
this
.
extraSearchFiles
=
extraFiles
||
[];
}
public
cancel
():
void
{
...
...
@@ -229,19 +232,37 @@ export class RipgrepParser extends EventEmitter {
this
.
onResult
();
}
this
.
fileMatch
=
new
FileMatch
(
path
.
isAbsolute
(
r
[
1
])
?
r
[
1
]
:
path
.
join
(
this
.
rootFolder
,
r
[
1
])
);
this
.
fileMatch
=
this
.
getFileMatch
(
r
[
1
]
);
}
else
{
// Line is empty (or malformed)
}
}
}
private
getFileMatch
(
relativeOrAbsolutePath
:
string
):
FileMatch
{
const
absPath
=
path
.
isAbsolute
(
relativeOrAbsolutePath
)
?
relativeOrAbsolutePath
:
path
.
join
(
this
.
rootFolder
,
relativeOrAbsolutePath
);
return
new
FileMatch
(
absPath
);
}
private
handleMatchLine
(
outputLine
:
string
,
lineNum
:
number
,
text
:
string
):
void
{
if
(
lineNum
===
0
)
{
text
=
strings
.
stripUTF8BOM
(
text
);
}
const
lineMatch
=
new
LineMatch
(
text
,
lineNum
);
if
(
!
this
.
fileMatch
)
{
// When searching a single file and no folderQueries, rg does not print the file line, so create it here
const
singleFile
=
this
.
extraSearchFiles
[
0
];
if
(
!
singleFile
)
{
throw
new
Error
(
'
Got match line for unknown file
'
);
}
this
.
fileMatch
=
this
.
getFileMatch
(
singleFile
);
}
this
.
fileMatch
.
addMatch
(
lineMatch
);
let
lastMatchEndPos
=
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录