Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
21c8f52d
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,发现更多精彩内容 >>
提交
21c8f52d
编写于
12月 22, 2017
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
codeBlockRenderer only used to return thenables
上级
b28eec68
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
16 addition
and
25 deletion
+16
-25
src/vs/base/browser/htmlContentRenderer.ts
src/vs/base/browser/htmlContentRenderer.ts
+15
-24
src/vs/editor/contrib/markdown/markdownRenderer.ts
src/vs/editor/contrib/markdown/markdownRenderer.ts
+1
-1
未找到文件。
src/vs/base/browser/htmlContentRenderer.ts
浏览文件 @
21c8f52d
...
...
@@ -11,13 +11,12 @@ import { escape } from 'vs/base/common/strings';
import
{
removeMarkdownEscapes
,
IMarkdownString
}
from
'
vs/base/common/htmlContent
'
;
import
{
marked
}
from
'
vs/base/common/marked/marked
'
;
import
{
IMouseEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
isThenable
}
from
'
vs/base/common/async
'
;
export
interface
RenderOptions
{
className
?:
string
;
inline
?:
boolean
;
actionCallback
?:
(
content
:
string
,
event
?:
IMouseEvent
)
=>
void
;
codeBlockRenderer
?:
(
modeId
:
string
,
value
:
string
)
=>
string
|
Thenable
<
string
>
;
codeBlockRenderer
?:
(
modeId
:
string
,
value
:
string
)
=>
Thenable
<
string
>
;
codeBlockRenderCallback
?:
()
=>
void
;
}
...
...
@@ -119,32 +118,24 @@ export function renderMarkdown(markdown: IMarkdownString, options: RenderOptions
if
(
options
.
codeBlockRenderer
)
{
renderer
.
code
=
(
code
,
lang
)
=>
{
const
value
=
options
.
codeBlockRenderer
(
lang
,
code
);
if
(
typeof
value
===
'
string
'
)
{
return
value
;
}
if
(
isThenable
(
value
))
{
// when code-block rendering is async we return sync
// but update the node with the real result later.
const
id
=
defaultGenerator
.
nextId
();
const
promise
=
Promise
.
all
([
value
,
withInnerHTML
]).
then
(
values
=>
{
const
strValue
=
values
[
0
]
as
string
;
const
span
=
element
.
querySelector
(
`div[data-code="
${
id
}
"]`
);
if
(
span
)
{
span
.
innerHTML
=
strValue
;
}
}).
catch
(
err
=>
{
// ignore
});
if
(
options
.
codeBlockRenderCallback
)
{
promise
.
then
(
options
.
codeBlockRenderCallback
);
// when code-block rendering is async we return sync
// but update the node with the real result later.
const
id
=
defaultGenerator
.
nextId
();
const
promise
=
Promise
.
all
([
value
,
withInnerHTML
]).
then
(
values
=>
{
const
strValue
=
values
[
0
];
const
span
=
element
.
querySelector
(
`div[data-code="
${
id
}
"]`
);
if
(
span
)
{
span
.
innerHTML
=
strValue
;
}
}).
catch
(
err
=>
{
// ignore
});
return
`<div class="code" data-code="
${
id
}
">
${
escape
(
code
)}
</div>`
;
if
(
options
.
codeBlockRenderCallback
)
{
promise
.
then
(
options
.
codeBlockRenderCallback
);
}
return
code
;
return
`<div class="code" data-code="
${
id
}
">
${
escape
(
code
)}
</div>`
;
};
}
...
...
src/vs/editor/contrib/markdown/markdownRenderer.ts
浏览文件 @
21c8f52d
...
...
@@ -33,7 +33,7 @@ export class MarkdownRenderer {
actionCallback
:
(
content
)
=>
{
this
.
_openerService
.
open
(
URI
.
parse
(
content
)).
then
(
void
0
,
onUnexpectedError
);
},
codeBlockRenderer
:
(
languageAlias
,
value
):
string
|
TPromise
<
string
>
=>
{
codeBlockRenderer
:
(
languageAlias
,
value
):
TPromise
<
string
>
=>
{
// In markdown,
// it is possible that we stumble upon language aliases (e.g.js instead of javascript)
// it is possible no alias is given in which case we fall back to the current editor lang
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录