working on markdown string dto

This commit is contained in:
Johannes Rieken
2018-11-08 18:12:56 +01:00
parent c15559789f
commit 0b99867455
3 changed files with 32 additions and 2 deletions

View File

@@ -274,6 +274,12 @@ export interface ISerializedSignatureHelpProviderMetadata {
readonly retriggerCharacters: ReadonlyArray<string>;
}
export interface IMarkdownStringDto {
isTrusted: boolean;
value: string;
uris: { [n: string]: UriComponents };
}
export interface MainThreadLanguageFeaturesShape extends IDisposable {
$unregister(handle: number): void;
$registerOutlineSupport(handle: number, selector: ISerializedDocumentFilter[], extensionId: string): void;

View File

@@ -664,7 +664,7 @@ class SuggestAdapter {
label: item.label,
kind: typeConvert.CompletionItemKind.from(item.kind),
detail: item.detail,
documentation: item.documentation,
documentation: typeConvert.MarkdownString.from(item.documentation),
filterText: item.filterText,
sortText: item.sortText,
preselect: item.preselect,

View File

@@ -19,11 +19,12 @@ import { IRange } from 'vs/editor/common/core/range';
import { ISelection } from 'vs/editor/common/core/selection';
import * as htmlContent from 'vs/base/common/htmlContent';
import * as languageSelector from 'vs/editor/common/modes/languageSelector';
import { WorkspaceEditDto, ResourceTextEditDto, ResourceFileEditDto } from 'vs/workbench/api/node/extHost.protocol';
import { WorkspaceEditDto, ResourceTextEditDto, ResourceFileEditDto, IMarkdownStringDto } from 'vs/workbench/api/node/extHost.protocol';
import { MarkerSeverity, IRelatedInformation, IMarkerData, MarkerTag } from 'vs/platform/markers/common/markers';
import { ACTIVE_GROUP, SIDE_GROUP } from 'vs/workbench/services/editor/common/editorService';
import { ExtHostDocumentsAndEditors } from 'vs/workbench/api/node/extHostDocumentsAndEditors';
import { isString, isNumber } from 'vs/base/common/types';
import * as marked from 'vs/base/common/marked/marked';
export interface PositionLike {
line: number;
@@ -220,6 +221,29 @@ export namespace MarkdownString {
return { value: '' };
}
}
export function from2(markup: vscode.MarkedString | vscode.MarkdownString): IMarkdownStringDto {
let { value, isTrusted } = from(markup);
let uris = Object.create(null);
let renderer = new marked.Renderer();
renderer.image = renderer.link = (href: string): string => {
try {
uris[href] = URI.parse(href, true);
} catch (e) {
// ignore
}
return '';
};
marked(value, { renderer });
return {
isTrusted,
value,
uris
};
}
export function to(value: htmlContent.IMarkdownString): vscode.MarkdownString {
const ret = new htmlContent.MarkdownString(value.value);
ret.isTrusted = value.isTrusted;