Move `DocumentLinkAdapter` to `/common/`

pull/2779/head
Alex Dima 3 years ago
parent 81023950c6
commit 89d05c5889
No known key found for this signature in database
GPG Key ID: 39563C1504FDD0C9

@ -463,7 +463,7 @@ function toMarkedStringArray(
//#endregion
//#region
//#region DocumentHighlightAdapter
export interface ILanguageWorkerWithDocumentHighlights {
findDocumentHighlights(
@ -728,3 +728,38 @@ function toSymbolKind(kind: lsTypes.SymbolKind): languages.SymbolKind {
}
//#endregion
//#region DocumentLinkAdapter
export interface ILanguageWorkerWithDocumentLinks {
findDocumentLinks(uri: string): Promise<lsTypes.DocumentLink[]>;
}
export class DocumentLinkAdapter<T extends ILanguageWorkerWithDocumentLinks>
implements languages.LinkProvider
{
constructor(private _worker: WorkerAccessor<T>) {}
public provideLinks(
model: editor.IReadOnlyModel,
token: CancellationToken
): Promise<languages.ILinksList> {
const resource = model.uri;
return this._worker(resource)
.then((worker) => worker.findDocumentLinks(resource.toString()))
.then((items) => {
if (!items) {
return;
}
return {
links: items.map((item) => ({
range: toRange(item.range),
url: item.target
}))
};
});
}
}
//#endregion

@ -29,7 +29,7 @@ export function setupMode1(defaults: LanguageServiceDefaults): void {
languageId,
new languageFeatures.HTMLDocumentHighlightAdapter(worker)
);
languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker));
languages.registerLinkProvider(languageId, new languageFeatures.HTMLDocumentLinkAdapter(worker));
languages.registerFoldingRangeProvider(
languageId,
new languageFeatures.FoldingRangeAdapter(worker)
@ -96,7 +96,10 @@ export function setupMode(defaults: LanguageServiceDefaults): IDisposable {
}
if (modeConfiguration.links) {
providers.push(
languages.registerLinkProvider(languageId, new languageFeatures.DocumentLinkAdapter(worker))
languages.registerLinkProvider(
languageId,
new languageFeatures.HTMLDocumentLinkAdapter(worker)
)
);
}
if (modeConfiguration.documentSymbols) {

@ -22,7 +22,8 @@ import {
HoverAdapter,
DocumentHighlightAdapter,
RenameAdapter,
DocumentSymbolAdapter
DocumentSymbolAdapter,
DocumentLinkAdapter
} from '../common/lspLanguageFeatures';
export interface WorkerAccessor {
@ -43,30 +44,7 @@ export class HTMLRenameAdapter extends RenameAdapter<HTMLWorker> {}
export class HTMLDocumentSymbolAdapter extends DocumentSymbolAdapter<HTMLWorker> {}
export class DocumentLinkAdapter implements languages.LinkProvider {
constructor(private _worker: WorkerAccessor) {}
public provideLinks(
model: editor.IReadOnlyModel,
token: CancellationToken
): Promise<languages.ILinksList> {
const resource = model.uri;
return this._worker(resource)
.then((worker) => worker.findDocumentLinks(resource.toString()))
.then((items) => {
if (!items) {
return;
}
return {
links: items.map((item) => ({
range: toRange(item.range),
url: item.target
}))
};
});
}
}
export class HTMLDocumentLinkAdapter extends DocumentLinkAdapter<HTMLWorker> {}
function fromFormattingOptions(options: languages.FormattingOptions): lsTypes.FormattingOptions {
return {

Loading…
Cancel
Save