提交 bfe83a84 编写于 作者: J Johannes Rieken

eng - less TPromise

上级 491f0d7b
......@@ -8,16 +8,16 @@
import * as DOM from 'vs/base/browser/dom';
import { defaultGenerator } from 'vs/base/common/idGenerator';
import { escape } from 'vs/base/common/strings';
import { TPromise } from 'vs/base/common/winjs.base';
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 | TPromise<string>;
codeBlockRenderer?: (modeId: string, value: string) => string | Thenable<string>;
}
function createElement(options: RenderOptions): HTMLElement {
......@@ -53,7 +53,7 @@ export function renderMarkdown(markdown: IMarkdownString, options: RenderOptions
// signal to code-block render that the
// element has been created
let signalInnerHTML: Function;
const withInnerHTML = new TPromise(c => signalInnerHTML = c);
const withInnerHTML = new Promise(c => signalInnerHTML = c);
const renderer = new marked.Renderer();
renderer.image = (href: string, title: string, text: string) => {
......@@ -122,17 +122,17 @@ export function renderMarkdown(markdown: IMarkdownString, options: RenderOptions
return value;
}
if (TPromise.is(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();
TPromise.join([value, withInnerHTML]).done(values => {
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;
}
}, err => {
}).catch(err => {
// ignore
});
return `<div class="code" data-code="${id}">${escape(code)}</div>`;
......
......@@ -6,7 +6,7 @@
import { dispose } from 'vs/base/common/lifecycle';
import { join } from 'path';
import { mkdirp, dirExists } from 'vs/base/node/pfs';
import { mkdirp, dirExists, realpath } from 'vs/base/node/pfs';
import Severity from 'vs/base/common/severity';
import { TPromise } from 'vs/base/common/winjs.base';
import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/node/extensionDescriptionRegistry';
......@@ -18,7 +18,6 @@ import { IExtensionMemento, ExtensionsActivator, ActivatedExtension, IExtensionA
import { ExtHostThreadService } from 'vs/workbench/services/thread/node/extHostThreadService';
import { ExtHostConfiguration } from 'vs/workbench/api/node/extHostConfiguration';
import { ExtHostWorkspace } from 'vs/workbench/api/node/extHostWorkspace';
import { realpath } from 'fs';
import { TernarySearchTree } from 'vs/base/common/map';
import { Barrier } from 'vs/base/common/async';
import { ILogService } from 'vs/platform/log/common/log';
......@@ -222,16 +221,8 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
if (!ext.main) {
return undefined;
}
return new TPromise((resolve, reject) => {
realpath(ext.extensionFolderPath, (err, path) => {
if (err) {
reject(err);
} else {
tree.set(path, ext);
resolve(void 0);
}
});
});
return realpath(ext.extensionFolderPath).then(value => tree.set(value, ext));
});
this._extensionPathIndex = TPromise.join(extensions).then(() => tree);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册