提交 afaad416 编写于 作者: A Alex Dima

Remove IMode.linkSupport and convert to provider

上级 68ea5b4c
...@@ -211,11 +211,6 @@ export interface IMode { ...@@ -211,11 +211,6 @@ export interface IMode {
*/ */
emitOutputSupport?:IEmitOutputSupport; emitOutputSupport?:IEmitOutputSupport;
/**
* Optional adapter to support detecting links.
*/
linkSupport?:ILinkSupport;
/** /**
* Optional adapter to support configuring this mode. * Optional adapter to support configuring this mode.
*/ */
...@@ -584,26 +579,16 @@ export interface IEmitOutput { ...@@ -584,26 +579,16 @@ export interface IEmitOutput {
content:string; content:string;
} }
/**
* Interface used to detect links.
*/
export interface ILink {
export interface ILink {
range: editorCommon.IRange; range: editorCommon.IRange;
/**
* The url of the link.
* The url should be absolute and will not get any special treatment.
*/
url: string; url: string;
extraInlineClassName?: string;
} }
export interface ILinkSupport { export interface ILinkSupport {
computeLinks(resource:URI):TPromise<ILink[]>; provideLinks(model: editorCommon.IReadOnlyModel, token: CancellationToken): ILink[] | Thenable<ILink[]>;
} }
/** /**
* Interface used to define a configurable editor mode. * Interface used to define a configurable editor mode.
*/ */
...@@ -781,3 +766,5 @@ export const DocumentFormattingEditProviderRegistry = new LanguageFeatureRegistr ...@@ -781,3 +766,5 @@ export const DocumentFormattingEditProviderRegistry = new LanguageFeatureRegistr
export const DocumentRangeFormattingEditProviderRegistry = new LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>(); export const DocumentRangeFormattingEditProviderRegistry = new LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>();
export const OnTypeFormattingEditProviderRegistry = new LanguageFeatureRegistry<OnTypeFormattingEditProvider>(); export const OnTypeFormattingEditProviderRegistry = new LanguageFeatureRegistry<OnTypeFormattingEditProvider>();
export const LinksProviderRegistry = new LanguageFeatureRegistry<ILinkSupport>();
...@@ -16,7 +16,7 @@ import {IEditorRange, IRange} from 'vs/editor/common/editorCommon'; ...@@ -16,7 +16,7 @@ import {IEditorRange, IRange} from 'vs/editor/common/editorCommon';
import {HoverProviderRegistry, Hover, IMode} from 'vs/editor/common/modes'; import {HoverProviderRegistry, Hover, IMode} from 'vs/editor/common/modes';
import {tokenizeToString} from 'vs/editor/common/modes/textToHtmlTokenizer'; import {tokenizeToString} from 'vs/editor/common/modes/textToHtmlTokenizer';
import {ICodeEditor} from 'vs/editor/browser/editorBrowser'; import {ICodeEditor} from 'vs/editor/browser/editorBrowser';
import {provideHover} from '../common/hover'; import {getHover} from '../common/hover';
import {HoverOperation, IHoverComputer} from './hoverOperation'; import {HoverOperation, IHoverComputer} from './hoverOperation';
import {ContentHoverWidget} from './hoverWidgets'; import {ContentHoverWidget} from './hoverWidgets';
...@@ -47,7 +47,7 @@ class ModesContentComputer implements IHoverComputer<Hover[]> { ...@@ -47,7 +47,7 @@ class ModesContentComputer implements IHoverComputer<Hover[]> {
return TPromise.as(null); return TPromise.as(null);
} }
return provideHover(model, new Position( return getHover(model, new Position(
this._range.startLineNumber, this._range.startLineNumber,
this._range.startColumn this._range.startColumn
)); ));
......
...@@ -13,7 +13,7 @@ import {CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions'; ...@@ -13,7 +13,7 @@ import {CommonEditorRegistry} from 'vs/editor/common/editorCommonExtensions';
import {Hover, HoverProviderRegistry} from 'vs/editor/common/modes'; import {Hover, HoverProviderRegistry} from 'vs/editor/common/modes';
import {asWinJsPromise} from 'vs/base/common/async'; import {asWinJsPromise} from 'vs/base/common/async';
export function provideHover(model: IReadOnlyModel, position: IEditorPosition): TPromise<Hover[]> { export function getHover(model: IReadOnlyModel, position: IEditorPosition): TPromise<Hover[]> {
const supports = HoverProviderRegistry.ordered(model); const supports = HoverProviderRegistry.ordered(model);
const values: Hover[] = []; const values: Hover[] = [];
...@@ -37,4 +37,4 @@ export function provideHover(model: IReadOnlyModel, position: IEditorPosition): ...@@ -37,4 +37,4 @@ export function provideHover(model: IReadOnlyModel, position: IEditorPosition):
return TPromise.join(promises).then(() => coalesce(values)); return TPromise.join(promises).then(() => coalesce(values));
} }
CommonEditorRegistry.registerDefaultLanguageCommand('_executeHoverProvider', provideHover); CommonEditorRegistry.registerDefaultLanguageCommand('_executeHoverProvider', getHover);
\ No newline at end of file \ No newline at end of file
...@@ -22,9 +22,10 @@ import {EditorAction} from 'vs/editor/common/editorAction'; ...@@ -22,9 +22,10 @@ import {EditorAction} from 'vs/editor/common/editorAction';
import {Behaviour} from 'vs/editor/common/editorActionEnablement'; import {Behaviour} from 'vs/editor/common/editorActionEnablement';
import * as editorCommon from 'vs/editor/common/editorCommon'; import * as editorCommon from 'vs/editor/common/editorCommon';
import {CommonEditorRegistry, EditorActionDescriptor} from 'vs/editor/common/editorCommonExtensions'; import {CommonEditorRegistry, EditorActionDescriptor} from 'vs/editor/common/editorCommonExtensions';
import {ILink} from 'vs/editor/common/modes'; import {ILink, LinksProviderRegistry} from 'vs/editor/common/modes';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService'; import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {IEditorMouseEvent} from 'vs/editor/browser/editorBrowser'; import {IEditorMouseEvent} from 'vs/editor/browser/editorBrowser';
import {getLinks} from 'vs/editor/contrib/links/common/links';
class LinkOccurence { class LinkOccurence {
...@@ -42,9 +43,6 @@ class LinkOccurence { ...@@ -42,9 +43,6 @@ class LinkOccurence {
private static _getOptions(link:ILink, isActive:boolean):editorCommon.IModelDecorationOptions { private static _getOptions(link:ILink, isActive:boolean):editorCommon.IModelDecorationOptions {
var result = ''; var result = '';
if (link.extraInlineClassName) {
result = link.extraInlineClassName + ' ';
}
if (isActive) { if (isActive) {
result += LinkDetector.CLASS_NAME_ACTIVE; result += LinkDetector.CLASS_NAME_ACTIVE;
...@@ -79,12 +77,10 @@ class LinkOccurence { ...@@ -79,12 +77,10 @@ class LinkOccurence {
class Link { class Link {
range: editorCommon.IEditorRange; range: editorCommon.IEditorRange;
url: string; url: string;
extraInlineClassName: string;
constructor(source:ILink) { constructor(source:ILink) {
this.range = new Range(source.range.startLineNumber, source.range.startColumn, source.range.endLineNumber, source.range.endColumn); this.range = new Range(source.range.startLineNumber, source.range.startColumn, source.range.endLineNumber, source.range.endColumn);
this.url = source.url; this.url = source.url;
this.extraInlineClassName = source.extraInlineClassName || null;
} }
} }
...@@ -165,9 +161,8 @@ class LinkDetector { ...@@ -165,9 +161,8 @@ class LinkDetector {
} }
let modePromise:TPromise<ILink[]> = TPromise.as(null); let modePromise:TPromise<ILink[]> = TPromise.as(null);
let mode = this.editor.getModel().getMode(); if (LinksProviderRegistry.has(this.editor.getModel())) {
if (mode.linkSupport) { modePromise = getLinks(this.editor.getModel());
modePromise = mode.linkSupport.computeLinks(this.editor.getModel().getAssociatedResource());
} }
let standardPromise:TPromise<ILink[]> = this.editorWorkerService.computeLinks(this.editor.getModel().getAssociatedResource()); let standardPromise:TPromise<ILink[]> = this.editorWorkerService.computeLinks(this.editor.getModel().getAssociatedResource());
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
import {onUnexpectedError} from 'vs/base/common/errors';
import {TPromise} from 'vs/base/common/winjs.base';
import {IReadOnlyModel} from 'vs/editor/common/editorCommon';
import {ILink, LinksProviderRegistry} from 'vs/editor/common/modes';
import {asWinJsPromise} from 'vs/base/common/async';
export function getLinks(model: IReadOnlyModel): TPromise<ILink[]> {
const promises = LinksProviderRegistry.ordered(model).map((support) => {
return asWinJsPromise((token) => {
return support.provideLinks(model, token);
}).then((result) => {
if (Array.isArray(result)) {
return <ILink[]> result;
}
}, err => {
onUnexpectedError(err);
});
});
return TPromise.join(promises).then(manyLinks => {
let result: ILink[] = [];
for (let links of manyLinks) {
if (links) {
result = result.concat(links);
}
}
return result;
});
}
...@@ -142,6 +142,12 @@ export class HandlebarsMode extends htmlMode.HTMLMode<htmlWorker.HTMLWorker> { ...@@ -142,6 +142,12 @@ export class HandlebarsMode extends htmlMode.HTMLMode<htmlWorker.HTMLWorker> {
return wireCancellationToken(token, this._provideDocumentHighlights(model.getAssociatedResource(), position)); return wireCancellationToken(token, this._provideDocumentHighlights(model.getAssociatedResource(), position));
} }
}); });
modes.LinksProviderRegistry.register(this.getId(), {
provideLinks: (model, token): Thenable<modes.ILink[]> => {
return wireCancellationToken(token, this._provideLinks(model.getAssociatedResource()));
}
});
} }
protected _createRichEditSupport(): modes.IRichEditSupport { protected _createRichEditSupport(): modes.IRichEditSupport {
......
...@@ -287,7 +287,6 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl ...@@ -287,7 +287,6 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl
public tokenizationSupport: modes.ITokenizationSupport; public tokenizationSupport: modes.ITokenizationSupport;
public richEditSupport: modes.IRichEditSupport; public richEditSupport: modes.IRichEditSupport;
public linkSupport:modes.ILinkSupport;
public configSupport: modes.IConfigurationSupport; public configSupport: modes.IConfigurationSupport;
private modeService:IModeService; private modeService:IModeService;
...@@ -307,7 +306,6 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl ...@@ -307,7 +306,6 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl
this.threadService = threadService; this.threadService = threadService;
this.tokenizationSupport = new TokenizationSupport(this, this, true, true); this.tokenizationSupport = new TokenizationSupport(this, this, true, true);
this.linkSupport = this;
this.configSupport = this; this.configSupport = this;
this.richEditSupport = this._createRichEditSupport(); this.richEditSupport = this._createRichEditSupport();
...@@ -358,6 +356,12 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl ...@@ -358,6 +356,12 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl
return wireCancellationToken(token, this._provideDocumentRangeFormattingEdits(model.getAssociatedResource(), range, options)); return wireCancellationToken(token, this._provideDocumentRangeFormattingEdits(model.getAssociatedResource(), range, options));
} }
}); });
modes.LinksProviderRegistry.register(this.getId(), {
provideLinks: (model, token): Thenable<modes.ILink[]> => {
return wireCancellationToken(token, this._provideLinks(model.getAssociatedResource()));
}
});
} }
protected _createModeWorkerManager(descriptor:modes.IModeDescriptor, instantiationService: IInstantiationService): ModeWorkerManager<W> { protected _createModeWorkerManager(descriptor:modes.IModeDescriptor, instantiationService: IInstantiationService): ModeWorkerManager<W> {
...@@ -484,9 +488,9 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl ...@@ -484,9 +488,9 @@ export class HTMLMode<W extends htmlWorker.HTMLWorker> extends AbstractMode impl
return this._worker((w) => w._doConfigure(options)); return this._worker((w) => w._doConfigure(options));
} }
static $computeLinks = OneWorkerAttr(HTMLMode, HTMLMode.prototype.computeLinks); static $_provideLinks = OneWorkerAttr(HTMLMode, HTMLMode.prototype._provideLinks);
public computeLinks(resource:URI):winjs.TPromise<modes.ILink[]> { protected _provideLinks(resource:URI):winjs.TPromise<modes.ILink[]> {
return this._worker((w) => w.computeLinks(resource)); return this._worker((w) => w.provideLinks(resource));
} }
static $_provideDocumentRangeFormattingEdits = OneWorkerAttr(HTMLMode, HTMLMode.prototype._provideDocumentRangeFormattingEdits); static $_provideDocumentRangeFormattingEdits = OneWorkerAttr(HTMLMode, HTMLMode.prototype._provideDocumentRangeFormattingEdits);
......
...@@ -21,7 +21,7 @@ import {isTag, DELIM_END, DELIM_START, DELIM_ASSIGN, ATTRIB_NAME, ATTRIB_VALUE} ...@@ -21,7 +21,7 @@ import {isTag, DELIM_END, DELIM_START, DELIM_ASSIGN, ATTRIB_NAME, ATTRIB_VALUE}
import {isEmptyElement} from 'vs/languages/html/common/htmlEmptyTagsShared'; import {isEmptyElement} from 'vs/languages/html/common/htmlEmptyTagsShared';
import {filterSuggestions} from 'vs/editor/common/modes/supports/suggestSupport'; import {filterSuggestions} from 'vs/editor/common/modes/supports/suggestSupport';
import paths = require('vs/base/common/paths'); import paths = require('vs/base/common/paths');
import {provideHover} from 'vs/editor/contrib/hover/common/hover'; import {getHover} from 'vs/editor/contrib/hover/common/hover';
import {provideReferences} from 'vs/editor/contrib/referenceSearch/common/referenceSearch'; import {provideReferences} from 'vs/editor/contrib/referenceSearch/common/referenceSearch';
import {provideCompletionItems} from 'vs/editor/contrib/suggest/common/suggest'; import {provideCompletionItems} from 'vs/editor/contrib/suggest/common/suggest';
...@@ -150,7 +150,7 @@ export class HTMLWorker { ...@@ -150,7 +150,7 @@ export class HTMLWorker {
public provideHover(resource:URI, position:editorCommon.IPosition): winjs.TPromise<modes.Hover> { public provideHover(resource:URI, position:editorCommon.IPosition): winjs.TPromise<modes.Hover> {
return this._delegateToModeAtPosition(resource, position, (isEmbeddedMode, model) => { return this._delegateToModeAtPosition(resource, position, (isEmbeddedMode, model) => {
if (isEmbeddedMode) { if (isEmbeddedMode) {
return provideHover(model, Position.lift(position)).then((r) => { return getHover(model, Position.lift(position)).then((r) => {
return (r.length > 0 ? r[0] : null); return (r.length > 0 ? r[0] : null);
}); });
} }
...@@ -659,7 +659,7 @@ export class HTMLWorker { ...@@ -659,7 +659,7 @@ export class HTMLWorker {
return newLinks; return newLinks;
} }
public computeLinks(resource: URI): winjs.TPromise<modes.ILink[]> { public provideLinks(resource: URI): winjs.TPromise<modes.ILink[]> {
let model = this.resourceService.get(resource); let model = this.resourceService.get(resource);
return winjs.TPromise.as(this._computeHTMLLinks(model)); return winjs.TPromise.as(this._computeHTMLLinks(model));
} }
......
...@@ -91,6 +91,12 @@ export class RAZORMode extends htmlMode.HTMLMode<RAZORWorker> { ...@@ -91,6 +91,12 @@ export class RAZORMode extends htmlMode.HTMLMode<RAZORWorker> {
return wireCancellationToken(token, this._provideDocumentHighlights(model.getAssociatedResource(), position)); return wireCancellationToken(token, this._provideDocumentHighlights(model.getAssociatedResource(), position));
} }
}); });
modes.LinksProviderRegistry.register(this.getId(), {
provideLinks: (model, token): Thenable<modes.ILink[]> => {
return wireCancellationToken(token, this._provideLinks(model.getAssociatedResource()));
}
});
} }
protected _createModeWorkerManager(descriptor:modes.IModeDescriptor, instantiationService: IInstantiationService): ModeWorkerManager<RAZORWorker> { protected _createModeWorkerManager(descriptor:modes.IModeDescriptor, instantiationService: IInstantiationService): ModeWorkerManager<RAZORWorker> {
......
...@@ -14,12 +14,13 @@ import {OutputWorker} from 'vs/workbench/parts/output/common/outputWorker'; ...@@ -14,12 +14,13 @@ import {OutputWorker} from 'vs/workbench/parts/output/common/outputWorker';
import winjs = require('vs/base/common/winjs.base'); import winjs = require('vs/base/common/winjs.base');
import {OneWorkerAttr} from 'vs/platform/thread/common/threadService'; import {OneWorkerAttr} from 'vs/platform/thread/common/threadService';
import URI from 'vs/base/common/uri'; import URI from 'vs/base/common/uri';
import Modes = require('vs/editor/common/modes'); import * as modes from 'vs/editor/common/modes';
import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService'; import {IEditorWorkerService} from 'vs/editor/common/services/editorWorkerService';
import {AbstractMode, ModeWorkerManager} from 'vs/editor/common/modes/abstractMode'; import {AbstractMode, ModeWorkerManager} from 'vs/editor/common/modes/abstractMode';
import {createRichEditSupport} from 'vs/editor/common/modes/monarch/monarchDefinition'; import {createRichEditSupport} from 'vs/editor/common/modes/monarch/monarchDefinition';
import {createTokenizationSupport} from 'vs/editor/common/modes/monarch/monarchLexer'; import {createTokenizationSupport} from 'vs/editor/common/modes/monarch/monarchLexer';
import {RichEditSupport} from 'vs/editor/common/modes/supports/richEditSupport'; import {RichEditSupport} from 'vs/editor/common/modes/supports/richEditSupport';
import {wireCancellationToken} from 'vs/base/common/async';
export const language: types.ILanguage = { export const language: types.ILanguage = {
displayName: 'Log', displayName: 'Log',
...@@ -47,9 +48,8 @@ export const language: types.ILanguage = { ...@@ -47,9 +48,8 @@ export const language: types.ILanguage = {
export class OutputMode extends AbstractMode { export class OutputMode extends AbstractMode {
public linkSupport:Modes.ILinkSupport; public tokenizationSupport: modes.ITokenizationSupport;
public tokenizationSupport: Modes.ITokenizationSupport; public richEditSupport: modes.IRichEditSupport;
public richEditSupport: Modes.IRichEditSupport;
private _modeWorkerManager: ModeWorkerManager<OutputWorker>; private _modeWorkerManager: ModeWorkerManager<OutputWorker>;
...@@ -64,19 +64,23 @@ export class OutputMode extends AbstractMode { ...@@ -64,19 +64,23 @@ export class OutputMode extends AbstractMode {
let lexer = compile(language); let lexer = compile(language);
this._modeWorkerManager = new ModeWorkerManager<OutputWorker>(descriptor, 'vs/workbench/parts/output/common/outputWorker', 'OutputWorker', null, instantiationService); this._modeWorkerManager = new ModeWorkerManager<OutputWorker>(descriptor, 'vs/workbench/parts/output/common/outputWorker', 'OutputWorker', null, instantiationService);
this.linkSupport = this;
this.tokenizationSupport = createTokenizationSupport(modeService, this, lexer); this.tokenizationSupport = createTokenizationSupport(modeService, this, lexer);
this.richEditSupport = new RichEditSupport(this.getId(), null, createRichEditSupport(lexer)); this.richEditSupport = new RichEditSupport(this.getId(), null, createRichEditSupport(lexer));
modes.LinksProviderRegistry.register(this.getId(), {
provideLinks: (model, token): Thenable<modes.ILink[]> => {
return wireCancellationToken(token, this._provideLinks(model.getAssociatedResource()));
}
});
} }
private _worker<T>(runner:(worker:OutputWorker)=>winjs.TPromise<T>): winjs.TPromise<T> { private _worker<T>(runner:(worker:OutputWorker)=>winjs.TPromise<T>): winjs.TPromise<T> {
return this._modeWorkerManager.worker(runner); return this._modeWorkerManager.worker(runner);
} }
static $computeLinks = OneWorkerAttr(OutputMode, OutputMode.prototype.computeLinks); static $_provideLinks = OneWorkerAttr(OutputMode, OutputMode.prototype._provideLinks);
public computeLinks(resource:URI):winjs.TPromise<Modes.ILink[]> { private _provideLinks(resource:URI):winjs.TPromise<modes.ILink[]> {
return this._worker((w) => w.computeLinks(resource)); return this._worker((w) => w.provideLinks(resource));
} }
} }
...@@ -44,7 +44,7 @@ export class OutputWorker { ...@@ -44,7 +44,7 @@ export class OutputWorker {
return this._contextService; return this._contextService;
} }
public computeLinks(resource: URI): TPromise<ILink[]> { public provideLinks(resource: URI): TPromise<ILink[]> {
let links: ILink[] = []; let links: ILink[] = [];
if (!this.patterns.length) { if (!this.patterns.length) {
return TPromise.as(links); return TPromise.as(links);
......
...@@ -26,7 +26,7 @@ import {getDocumentSymbols} from 'vs/editor/contrib/quickOpen/common/quickOpen'; ...@@ -26,7 +26,7 @@ import {getDocumentSymbols} from 'vs/editor/contrib/quickOpen/common/quickOpen';
import {DocumentSymbolProviderRegistry, DocumentHighlightKind} from 'vs/editor/common/modes'; import {DocumentSymbolProviderRegistry, DocumentHighlightKind} from 'vs/editor/common/modes';
import {getCodeLensData} from 'vs/editor/contrib/codelens/common/codelens'; import {getCodeLensData} from 'vs/editor/contrib/codelens/common/codelens';
import {getDeclarationsAtPosition} from 'vs/editor/contrib/goToDeclaration/common/goToDeclaration'; import {getDeclarationsAtPosition} from 'vs/editor/contrib/goToDeclaration/common/goToDeclaration';
import {provideHover} from 'vs/editor/contrib/hover/common/hover'; import {getHover} from 'vs/editor/contrib/hover/common/hover';
import {getOccurrencesAtPosition} from 'vs/editor/contrib/wordHighlighter/common/wordHighlighter'; import {getOccurrencesAtPosition} from 'vs/editor/contrib/wordHighlighter/common/wordHighlighter';
import {provideReferences} from 'vs/editor/contrib/referenceSearch/common/referenceSearch'; import {provideReferences} from 'vs/editor/contrib/referenceSearch/common/referenceSearch';
import {getCodeActions} from 'vs/editor/contrib/quickFix/common/quickFix'; import {getCodeActions} from 'vs/editor/contrib/quickFix/common/quickFix';
...@@ -337,7 +337,7 @@ suite('ExtHostLanguageFeatures', function() { ...@@ -337,7 +337,7 @@ suite('ExtHostLanguageFeatures', function() {
})); }));
return threadService.sync().then(() => { return threadService.sync().then(() => {
provideHover(model, new EditorPosition(1, 1)).then(value => { getHover(model, new EditorPosition(1, 1)).then(value => {
assert.equal(value.length, 1); assert.equal(value.length, 1);
let [entry] = value; let [entry] = value;
assert.deepEqual(entry.range, { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 5 }); assert.deepEqual(entry.range, { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 5 });
...@@ -356,7 +356,7 @@ suite('ExtHostLanguageFeatures', function() { ...@@ -356,7 +356,7 @@ suite('ExtHostLanguageFeatures', function() {
return threadService.sync().then(() => { return threadService.sync().then(() => {
provideHover(model, new EditorPosition(1, 1)).then(value => { getHover(model, new EditorPosition(1, 1)).then(value => {
assert.equal(value.length, 1); assert.equal(value.length, 1);
let [entry] = value; let [entry] = value;
assert.deepEqual(entry.range, { startLineNumber: 4, startColumn: 1, endLineNumber: 9, endColumn: 8 }); assert.deepEqual(entry.range, { startLineNumber: 4, startColumn: 1, endLineNumber: 9, endColumn: 8 });
...@@ -380,7 +380,7 @@ suite('ExtHostLanguageFeatures', function() { ...@@ -380,7 +380,7 @@ suite('ExtHostLanguageFeatures', function() {
})); }));
return threadService.sync().then(() => { return threadService.sync().then(() => {
return provideHover(model, new EditorPosition(1, 1)).then(value => { return getHover(model, new EditorPosition(1, 1)).then(value => {
assert.equal(value.length, 2); assert.equal(value.length, 2);
let [first, second] = value; let [first, second] = value;
assert.equal(first.htmlContent[0].markdown, 'registered second'); assert.equal(first.htmlContent[0].markdown, 'registered second');
...@@ -405,7 +405,7 @@ suite('ExtHostLanguageFeatures', function() { ...@@ -405,7 +405,7 @@ suite('ExtHostLanguageFeatures', function() {
return threadService.sync().then(() => { return threadService.sync().then(() => {
provideHover(model, new EditorPosition(1, 1)).then(value => { getHover(model, new EditorPosition(1, 1)).then(value => {
assert.equal(value.length, 1); assert.equal(value.length, 1);
}); });
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册