Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
d32ba26a
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,发现更多精彩内容 >>
提交
d32ba26a
编写于
6月 10, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use DisposableStore for htmlContentRenderer
上级
1f4e2a21
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
33 addition
and
18 deletion
+33
-18
src/vs/base/browser/htmlContentRenderer.ts
src/vs/base/browser/htmlContentRenderer.ts
+4
-4
src/vs/base/test/browser/htmlContent.test.ts
src/vs/base/test/browser/htmlContent.test.ts
+13
-2
src/vs/editor/contrib/markdown/markdownRenderer.ts
src/vs/editor/contrib/markdown/markdownRenderer.ts
+4
-4
src/vs/workbench/browser/parts/views/customView.ts
src/vs/workbench/browser/parts/views/customView.ts
+4
-4
src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts
.../workbench/contrib/comments/browser/commentsTreeViewer.ts
+4
-2
src/vs/workbench/contrib/preferences/browser/settingsTree.ts
src/vs/workbench/contrib/preferences/browser/settingsTree.ts
+4
-2
未找到文件。
src/vs/base/browser/htmlContentRenderer.ts
浏览文件 @
d32ba26a
...
...
@@ -9,7 +9,7 @@ import { escape } from 'vs/base/common/strings';
import
{
removeMarkdownEscapes
,
IMarkdownString
}
from
'
vs/base/common/htmlContent
'
;
import
*
as
marked
from
'
vs/base/common/marked/marked
'
;
import
{
IMouseEvent
}
from
'
vs/base/browser/mouseEvent
'
;
import
{
IDisposabl
e
}
from
'
vs/base/common/lifecycle
'
;
import
{
DisposableStor
e
}
from
'
vs/base/common/lifecycle
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
parse
}
from
'
vs/base/common/marshalling
'
;
...
...
@@ -17,7 +17,7 @@ import { cloneAndChange } from 'vs/base/common/objects';
export
interface
IContentActionHandler
{
callback
:
(
content
:
string
,
event
?:
IMouseEvent
)
=>
void
;
readonly
disposeables
:
IDisposable
[]
;
readonly
disposeables
:
DisposableStore
;
}
export
interface
RenderOptions
{
...
...
@@ -189,7 +189,7 @@ export function renderMarkdown(markdown: IMarkdownString, options: RenderOptions
}
if
(
options
.
actionHandler
)
{
options
.
actionHandler
.
disposeables
.
push
(
DOM
.
addStandardDisposableListener
(
element
,
'
click
'
,
event
=>
{
options
.
actionHandler
.
disposeables
.
add
(
DOM
.
addStandardDisposableListener
(
element
,
'
click
'
,
event
=>
{
let
target
:
HTMLElement
|
null
=
event
.
target
;
if
(
target
.
tagName
!==
'
A
'
)
{
target
=
target
.
parentElement
;
...
...
@@ -284,7 +284,7 @@ function _renderFormattedText(element: Node, treeNode: IFormatParseTree, actionH
else
if
(
treeNode
.
type
===
FormatType
.
Action
&&
actionHandler
)
{
const
a
=
document
.
createElement
(
'
a
'
);
a
.
href
=
'
#
'
;
actionHandler
.
disposeables
.
push
(
DOM
.
addStandardDisposableListener
(
a
,
'
click
'
,
(
event
)
=>
{
actionHandler
.
disposeables
.
add
(
DOM
.
addStandardDisposableListener
(
a
,
'
click
'
,
(
event
)
=>
{
actionHandler
.
callback
(
String
(
treeNode
.
index
),
event
);
}));
...
...
src/vs/base/test/browser/htmlContent.test.ts
浏览文件 @
d32ba26a
...
...
@@ -5,8 +5,19 @@
import
*
as
assert
from
'
assert
'
;
import
*
as
marked
from
'
vs/base/common/marked/marked
'
;
import
{
renderMarkdown
,
renderText
,
renderFormattedText
}
from
'
vs/base/browser/htmlContentRenderer
'
;
import
{
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
suite
(
'
HtmlContent
'
,
()
=>
{
const
store
=
new
DisposableStore
();
setup
(()
=>
{
store
.
clear
();
});
teardown
(()
=>
{
store
.
clear
();
});
test
(
'
render simple element
'
,
()
=>
{
let
result
:
HTMLElement
=
renderText
(
'
testing
'
);
...
...
@@ -55,7 +66,7 @@ suite('HtmlContent', () => {
assert
.
strictEqual
(
content
,
'
0
'
);
callbackCalled
=
true
;
},
disposeables
:
[]
disposeables
:
store
}
});
assert
.
strictEqual
(
result
.
innerHTML
,
'
<a href="#">action</a>
'
);
...
...
@@ -74,7 +85,7 @@ suite('HtmlContent', () => {
assert
.
strictEqual
(
content
,
'
0
'
);
callbackCalled
=
true
;
},
disposeables
:
[]
disposeables
:
store
}
});
assert
.
strictEqual
(
result
.
innerHTML
,
'
<i><b><a href="#">action</a></b></i>
'
);
...
...
src/vs/editor/contrib/markdown/markdownRenderer.ts
浏览文件 @
d32ba26a
...
...
@@ -13,7 +13,7 @@ import { tokenizeToString } from 'vs/editor/common/modes/textToHtmlTokenizer';
import
{
ICodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
import
{
optional
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IDisposable
,
dispos
e
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
DisposableStor
e
}
from
'
vs/base/common/lifecycle
'
;
import
{
TokenizationRegistry
}
from
'
vs/editor/common/modes
'
;
export
interface
IMarkdownRenderResult
extends
IDisposable
{
...
...
@@ -32,7 +32,7 @@ export class MarkdownRenderer {
)
{
}
private
getOptions
(
disposeables
:
IDisposable
[]
):
RenderOptions
{
private
getOptions
(
disposeables
:
DisposableStore
):
RenderOptions
{
return
{
codeBlockRenderer
:
(
languageAlias
,
value
)
=>
{
// In markdown,
...
...
@@ -78,7 +78,7 @@ export class MarkdownRenderer {
}
render
(
markdown
:
IMarkdownString
|
undefined
):
IMarkdownRenderResult
{
const
disposeables
:
IDisposable
[]
=
[]
;
const
disposeables
=
new
DisposableStore
()
;
let
element
:
HTMLElement
;
if
(
!
markdown
)
{
...
...
@@ -89,7 +89,7 @@ export class MarkdownRenderer {
return
{
element
,
dispose
:
()
=>
dispose
(
disposeables
)
dispose
:
()
=>
dispose
ables
.
dispose
(
)
};
}
}
src/vs/workbench/browser/parts/views/customView.ts
浏览文件 @
d32ba26a
...
...
@@ -5,7 +5,7 @@
import
'
vs/css!./media/views
'
;
import
{
Event
,
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IDisposable
,
dispose
,
Disposable
,
toDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
dispose
,
Disposable
,
toDisposable
,
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IAction
,
IActionViewItem
,
ActionRunner
,
Action
}
from
'
vs/base/common/actions
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
...
...
@@ -888,7 +888,7 @@ class MarkdownRenderer {
)
{
}
private
getOptions
(
disposeables
:
IDisposable
[]
):
RenderOptions
{
private
getOptions
(
disposeables
:
DisposableStore
):
RenderOptions
{
return
{
actionHandler
:
{
callback
:
(
content
)
=>
{
...
...
@@ -908,11 +908,11 @@ class MarkdownRenderer {
}
render
(
markdown
:
IMarkdownString
):
IMarkdownRenderResult
{
let
disposeables
:
IDisposable
[]
=
[]
;
const
disposeables
=
new
DisposableStore
()
;
const
element
:
HTMLElement
=
markdown
?
renderMarkdown
(
markdown
,
this
.
getOptions
(
disposeables
))
:
document
.
createElement
(
'
span
'
);
return
{
element
,
dispose
:
()
=>
dispose
(
disposeables
)
dispose
:
()
=>
dispose
ables
.
dispose
(
)
};
}
}
src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts
浏览文件 @
d32ba26a
...
...
@@ -7,7 +7,7 @@ import * as dom from 'vs/base/browser/dom';
import
*
as
nls
from
'
vs/nls
'
;
import
{
renderMarkdown
}
from
'
vs/base/browser/htmlContentRenderer
'
;
import
{
onUnexpectedError
}
from
'
vs/base/common/errors
'
;
import
{
IDisposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
IDisposable
,
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
URI
}
from
'
vs/base/common/uri
'
;
import
{
IDataSource
,
IFilter
,
IRenderer
as
ITreeRenderer
,
ITree
}
from
'
vs/base/parts/tree/browser/tree
'
;
import
{
IOpenerService
}
from
'
vs/platform/opener/common/opener
'
;
...
...
@@ -144,6 +144,8 @@ export class CommentsModelRenderer implements ITreeRenderer {
private
renderCommentElement
(
tree
:
ITree
,
element
:
CommentNode
,
templateData
:
ICommentThreadTemplateData
)
{
templateData
.
userName
.
textContent
=
element
.
comment
.
userName
;
templateData
.
commentText
.
innerHTML
=
''
;
const
disposables
=
new
DisposableStore
();
templateData
.
disposables
.
push
(
disposables
);
const
renderedComment
=
renderMarkdown
(
element
.
comment
.
body
,
{
inline
:
true
,
actionHandler
:
{
...
...
@@ -155,7 +157,7 @@ export class CommentsModelRenderer implements ITreeRenderer {
// ignore
}
},
disposeables
:
templateData
.
disposables
disposeables
:
disposables
}
});
...
...
src/vs/workbench/contrib/preferences/browser/settingsTree.ts
浏览文件 @
d32ba26a
...
...
@@ -403,7 +403,9 @@ export abstract class AbstractSettingRenderer extends Disposable implements ITre
template
.
descriptionElement
.
innerHTML
=
''
;
if
(
element
.
setting
.
descriptionIsMarkdown
)
{
const
renderedDescription
=
this
.
renderDescriptionMarkdown
(
element
,
element
.
description
,
template
.
toDispose
);
const
disposables
=
new
DisposableStore
();
template
.
toDispose
.
push
(
disposables
);
const
renderedDescription
=
this
.
renderDescriptionMarkdown
(
element
,
element
.
description
,
disposables
);
template
.
descriptionElement
.
appendChild
(
renderedDescription
);
}
else
{
template
.
descriptionElement
.
innerText
=
element
.
description
;
...
...
@@ -447,7 +449,7 @@ export abstract class AbstractSettingRenderer extends Disposable implements ITre
}
private
renderDescriptionMarkdown
(
element
:
SettingsTreeSettingElement
,
text
:
string
,
disposeables
:
IDisposable
[]
):
HTMLElement
{
private
renderDescriptionMarkdown
(
element
:
SettingsTreeSettingElement
,
text
:
string
,
disposeables
:
DisposableStore
):
HTMLElement
{
// Rewrite `#editor.fontSize#` to link format
text
=
fixSettingLinks
(
text
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录