Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
fa20275d
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,发现更多精彩内容 >>
提交
fa20275d
编写于
5月 15, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
EH search - logging in output channel
上级
0242f78a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
15 deletion
+31
-15
extensions/search-rg/src/extension.ts
extensions/search-rg/src/extension.ts
+7
-3
extensions/search-rg/src/ripgrepFileSearch.ts
extensions/search-rg/src/ripgrepFileSearch.ts
+12
-6
extensions/search-rg/src/ripgrepTextSearch.ts
extensions/search-rg/src/ripgrepTextSearch.ts
+12
-6
未找到文件。
extensions/search-rg/src/extension.ts
浏览文件 @
fa20275d
...
...
@@ -8,18 +8,22 @@ import { RipgrepTextSearchEngine } from './ripgrepTextSearch';
import
{
RipgrepFileSearchEngine
}
from
'
./ripgrepFileSearch
'
;
export
function
activate
():
void
{
const
provider
=
new
RipgrepSearchProvider
();
const
outputChannel
=
vscode
.
window
.
createOutputChannel
(
'
search-rg
'
);
const
provider
=
new
RipgrepSearchProvider
(
outputChannel
);
vscode
.
workspace
.
registerSearchProvider
(
'
file
'
,
provider
);
}
class
RipgrepSearchProvider
implements
vscode
.
SearchProvider
{
constructor
(
private
outputChannel
:
vscode
.
OutputChannel
)
{
}
provideTextSearchResults
(
query
:
vscode
.
TextSearchQuery
,
options
:
vscode
.
TextSearchOptions
,
progress
:
vscode
.
Progress
<
vscode
.
TextSearchResult
>
,
token
:
vscode
.
CancellationToken
):
Thenable
<
void
>
{
const
engine
=
new
RipgrepTextSearchEngine
();
const
engine
=
new
RipgrepTextSearchEngine
(
this
.
outputChannel
);
return
engine
.
provideTextSearchResults
(
query
,
options
,
progress
,
token
);
}
provideFileSearchResults
(
options
:
vscode
.
SearchOptions
,
progress
:
vscode
.
Progress
<
vscode
.
Uri
>
,
token
:
vscode
.
CancellationToken
):
Thenable
<
void
>
{
const
engine
=
new
RipgrepFileSearchEngine
();
const
engine
=
new
RipgrepFileSearchEngine
(
this
.
outputChannel
);
return
engine
.
provideFileSearchResults
(
options
,
progress
,
token
);
}
}
\ No newline at end of file
extensions/search-rg/src/ripgrepFileSearch.ts
浏览文件 @
fa20275d
...
...
@@ -22,11 +22,18 @@ export class RipgrepFileSearchEngine {
private
rgProc
:
cp
.
ChildProcess
;
private
killRgProcFn
:
(
code
?:
number
)
=>
void
;
constructor
()
{
constructor
(
private
outputChannel
:
vscode
.
OutputChannel
)
{
this
.
killRgProcFn
=
()
=>
this
.
rgProc
&&
this
.
rgProc
.
kill
();
}
provideFileSearchResults
(
options
:
vscode
.
SearchOptions
,
progress
:
vscode
.
Progress
<
vscode
.
Uri
>
,
token
:
vscode
.
CancellationToken
):
Thenable
<
void
>
{
this
.
outputChannel
.
appendLine
(
`provideFileSearchResults
${
JSON
.
stringify
({
...
options
,
...{
folder
:
options
.
folder
.
toString
()
}
})}
`
);
return
new
Promise
((
resolve
,
reject
)
=>
{
let
isDone
=
false
;
const
cancel
=
()
=>
{
...
...
@@ -39,11 +46,10 @@ export class RipgrepFileSearchEngine {
const
cwd
=
options
.
folder
.
fsPath
;
// TODO logging
// const escapedArgs = rgArgs
// .map(arg => arg.match(/^-/) ? arg : `'${arg}'`)
// .join(' ');
// let rgCmd = `rg ${escapedArgs}\n - cwd: ${cwd}`;
const
escapedArgs
=
rgArgs
.
map
(
arg
=>
arg
.
match
(
/^-/
)
?
arg
:
`'
${
arg
}
'`
)
.
join
(
'
'
);
this
.
outputChannel
.
appendLine
(
`rg
${
escapedArgs
}
\n - cwd:
${
cwd
}
\n`
);
this
.
rgProc
=
cp
.
spawn
(
rgDiskPath
,
rgArgs
,
{
cwd
});
process
.
once
(
'
exit
'
,
this
.
killRgProcFn
);
...
...
extensions/search-rg/src/ripgrepTextSearch.ts
浏览文件 @
fa20275d
...
...
@@ -28,11 +28,18 @@ export class RipgrepTextSearchEngine {
private
ripgrepParser
:
RipgrepParser
;
constructor
()
{
constructor
(
private
outputChannel
:
vscode
.
OutputChannel
)
{
this
.
killRgProcFn
=
()
=>
this
.
rgProc
&&
this
.
rgProc
.
kill
();
}
provideTextSearchResults
(
query
:
vscode
.
TextSearchQuery
,
options
:
vscode
.
TextSearchOptions
,
progress
:
vscode
.
Progress
<
vscode
.
TextSearchResult
>
,
token
:
vscode
.
CancellationToken
):
Thenable
<
void
>
{
this
.
outputChannel
.
appendLine
(
`provideTextSearchResults
${
query
.
pattern
}
,
${
JSON
.
stringify
({
...
options
,
...{
folder
:
options
.
folder
.
toString
()
}
})}
`
);
return
new
Promise
((
resolve
,
reject
)
=>
{
const
cancel
=
()
=>
{
this
.
isDone
=
true
;
...
...
@@ -45,11 +52,10 @@ export class RipgrepTextSearchEngine {
const
cwd
=
options
.
folder
.
fsPath
;
// TODO logging
// const escapedArgs = rgArgs
// .map(arg => arg.match(/^-/) ? arg : `'${arg}'`)
// .join(' ');
// let rgCmd = `rg ${escapedArgs}\n - cwd: ${cwd}`;
const
escapedArgs
=
rgArgs
.
map
(
arg
=>
arg
.
match
(
/^-/
)
?
arg
:
`'
${
arg
}
'`
)
.
join
(
'
'
);
this
.
outputChannel
.
appendLine
(
`rg
${
escapedArgs
}
\n - cwd:
${
cwd
}
\n`
);
this
.
rgProc
=
cp
.
spawn
(
rgDiskPath
,
rgArgs
,
{
cwd
});
process
.
once
(
'
exit
'
,
this
.
killRgProcFn
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录