|
|
|
@ -16,7 +16,8 @@ import {
|
|
|
|
|
DocumentSymbolAdapter,
|
|
|
|
|
DocumentLinkAdapter,
|
|
|
|
|
DocumentFormattingEditProvider,
|
|
|
|
|
DocumentRangeFormattingEditProvider
|
|
|
|
|
DocumentRangeFormattingEditProvider,
|
|
|
|
|
FoldingRangeAdapter
|
|
|
|
|
} from '../common/lspLanguageFeatures';
|
|
|
|
|
|
|
|
|
|
export interface WorkerAccessor {
|
|
|
|
@ -43,49 +44,7 @@ export class HTMLDocumentFormattingEditProvider extends DocumentFormattingEditPr
|
|
|
|
|
|
|
|
|
|
export class HTMLDocumentRangeFormattingEditProvider extends DocumentRangeFormattingEditProvider<HTMLWorker> {}
|
|
|
|
|
|
|
|
|
|
export class FoldingRangeAdapter implements languages.FoldingRangeProvider {
|
|
|
|
|
constructor(private _worker: WorkerAccessor) {}
|
|
|
|
|
|
|
|
|
|
public provideFoldingRanges(
|
|
|
|
|
model: editor.IReadOnlyModel,
|
|
|
|
|
context: languages.FoldingContext,
|
|
|
|
|
token: CancellationToken
|
|
|
|
|
): Promise<languages.FoldingRange[] | undefined> {
|
|
|
|
|
const resource = model.uri;
|
|
|
|
|
|
|
|
|
|
return this._worker(resource)
|
|
|
|
|
.then((worker) => worker.getFoldingRanges(resource.toString(), context))
|
|
|
|
|
.then((ranges) => {
|
|
|
|
|
if (!ranges) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
return ranges.map((range) => {
|
|
|
|
|
const result: languages.FoldingRange = {
|
|
|
|
|
start: range.startLine + 1,
|
|
|
|
|
end: range.endLine + 1
|
|
|
|
|
};
|
|
|
|
|
if (typeof range.kind !== 'undefined') {
|
|
|
|
|
result.kind = toFoldingRangeKind(<lsTypes.FoldingRangeKind>range.kind);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function toFoldingRangeKind(
|
|
|
|
|
kind: lsTypes.FoldingRangeKind
|
|
|
|
|
): languages.FoldingRangeKind | undefined {
|
|
|
|
|
switch (kind) {
|
|
|
|
|
case lsTypes.FoldingRangeKind.Comment:
|
|
|
|
|
return languages.FoldingRangeKind.Comment;
|
|
|
|
|
case lsTypes.FoldingRangeKind.Imports:
|
|
|
|
|
return languages.FoldingRangeKind.Imports;
|
|
|
|
|
case lsTypes.FoldingRangeKind.Region:
|
|
|
|
|
return languages.FoldingRangeKind.Region;
|
|
|
|
|
}
|
|
|
|
|
return void 0;
|
|
|
|
|
}
|
|
|
|
|
export class HTMLFoldingRangeAdapter extends FoldingRangeAdapter<HTMLWorker> {}
|
|
|
|
|
|
|
|
|
|
export class SelectionRangeAdapter implements languages.SelectionRangeProvider {
|
|
|
|
|
constructor(private _worker: WorkerAccessor) {}
|
|
|
|
|