Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
e0ae6388
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,发现更多精彩内容 >>
提交
e0ae6388
编写于
6月 04, 2018
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extracting common code for getMarkdownDocument
上级
7b69194f
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
21 addition
and
17 deletion
+21
-17
extensions/markdown-language-features/src/features/workspaceSymbolProvider.ts
...language-features/src/features/workspaceSymbolProvider.ts
+21
-17
未找到文件。
extensions/markdown-language-features/src/features/workspaceSymbolProvider.ts
浏览文件 @
e0ae6388
...
...
@@ -11,17 +11,17 @@ import MDDocumentSymbolProvider from './documentSymbolProvider';
import
{
SkinnyTextDocument
}
from
'
../tableOfContentsProvider
'
;
export
interface
WorkspaceMarkdownDocumentProvider
{
getAllMarkdownDocuments
():
Thenable
<
SkinnyTextDocument
[]
>
;
getAllMarkdownDocuments
():
Thenable
<
Iterable
<
SkinnyTextDocument
>
>
;
readonly
onDidChangeMarkdownDocument
:
vscode
.
Event
<
vscode
.
TextDocument
>
;
readonly
onDidCreateMarkdownDocument
:
vscode
.
Event
<
vscode
.
TextDocument
>
;
readonly
onDidChangeMarkdownDocument
:
vscode
.
Event
<
Skinny
TextDocument
>
;
readonly
onDidCreateMarkdownDocument
:
vscode
.
Event
<
Skinny
TextDocument
>
;
readonly
onDidDeleteMarkdownDocument
:
vscode
.
Event
<
vscode
.
Uri
>
;
}
class
VSCodeWorkspaceMarkdownDocumentProvider
implements
WorkspaceMarkdownDocumentProvider
{
private
readonly
_onDidChangeMarkdownDocumentEmitter
=
new
vscode
.
EventEmitter
<
vscode
.
TextDocument
>
();
private
readonly
_onDidCreateMarkdownDocumentEmitter
=
new
vscode
.
EventEmitter
<
vscode
.
TextDocument
>
();
private
readonly
_onDidChangeMarkdownDocumentEmitter
=
new
vscode
.
EventEmitter
<
Skinny
TextDocument
>
();
private
readonly
_onDidCreateMarkdownDocumentEmitter
=
new
vscode
.
EventEmitter
<
Skinny
TextDocument
>
();
private
readonly
_onDidDeleteMarkdownDocumentEmitter
=
new
vscode
.
EventEmitter
<
vscode
.
Uri
>
();
private
_watcher
:
vscode
.
FileSystemWatcher
|
undefined
;
...
...
@@ -40,9 +40,8 @@ class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocume
async
getAllMarkdownDocuments
()
{
const
resources
=
await
vscode
.
workspace
.
findFiles
(
'
**/*.md
'
,
'
**/node_modules/**
'
);
const
documents
=
await
Promise
.
all
(
resources
.
map
(
resource
=>
vscode
.
workspace
.
openTextDocument
(
resource
).
then
(
x
=>
x
,
()
=>
undefined
)));
return
documents
.
filter
(
doc
=>
doc
&&
isMarkdownFile
(
doc
))
as
vscode
.
TextDocument
[];
const
docs
=
await
Promise
.
all
(
resources
.
map
(
doc
=>
this
.
getMarkdownDocument
(
doc
)));
return
docs
.
filter
(
doc
=>
!!
doc
)
as
SkinnyTextDocument
[];
}
public
get
onDidChangeMarkdownDocument
()
{
...
...
@@ -68,15 +67,15 @@ class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocume
this
.
_watcher
=
vscode
.
workspace
.
createFileSystemWatcher
(
'
**/*.md
'
);
this
.
_watcher
.
onDidChange
(
async
resource
=>
{
const
document
=
await
vscode
.
workspace
.
openText
Document
(
resource
);
if
(
isMarkdownFile
(
document
)
)
{
const
document
=
await
this
.
getMarkdown
Document
(
resource
);
if
(
document
)
{
this
.
_onDidChangeMarkdownDocumentEmitter
.
fire
(
document
);
}
},
null
,
this
.
_disposables
);
this
.
_watcher
.
onDidCreate
(
async
resource
=>
{
const
document
=
await
vscode
.
workspace
.
openText
Document
(
resource
);
if
(
isMarkdownFile
(
document
)
)
{
const
document
=
await
this
.
getMarkdown
Document
(
resource
);
if
(
document
)
{
this
.
_onDidCreateMarkdownDocumentEmitter
.
fire
(
document
);
}
},
null
,
this
.
_disposables
);
...
...
@@ -91,6 +90,11 @@ class VSCodeWorkspaceMarkdownDocumentProvider implements WorkspaceMarkdownDocume
}
},
null
,
this
.
_disposables
);
}
private
async
getMarkdownDocument
(
resource
:
vscode
.
Uri
):
Promise
<
SkinnyTextDocument
|
undefined
>
{
const
doc
=
await
vscode
.
workspace
.
openTextDocument
(
resource
);
return
doc
&&
isMarkdownFile
(
doc
)
?
doc
:
undefined
;
}
}
...
...
@@ -120,8 +124,8 @@ export default class MarkdownWorkspaceSymbolProvider implements vscode.Workspace
}
public
async
populateSymbolCache
():
Promise
<
void
>
{
const
mark
D
ownDocumentUris
=
await
this
.
_workspaceMarkdownDocumentProvider
.
getAllMarkdownDocuments
();
for
(
const
document
of
mark
D
ownDocumentUris
)
{
const
mark
d
ownDocumentUris
=
await
this
.
_workspaceMarkdownDocumentProvider
.
getAllMarkdownDocuments
();
for
(
const
document
of
mark
d
ownDocumentUris
)
{
this
.
_symbolCache
.
set
(
document
.
uri
.
fsPath
,
this
.
getSymbols
(
document
));
}
}
...
...
@@ -136,8 +140,8 @@ export default class MarkdownWorkspaceSymbolProvider implements vscode.Workspace
});
}
private
onDidChangeDocument
(
document
:
vscode
.
TextDocument
)
{
this
.
_symbolCache
.
set
(
document
.
fileName
,
this
.
getSymbols
(
document
));
private
onDidChangeDocument
(
document
:
Skinny
TextDocument
)
{
this
.
_symbolCache
.
set
(
document
.
uri
.
fsPath
,
this
.
getSymbols
(
document
));
}
private
onDidDeleteDocument
(
resource
:
vscode
.
Uri
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录