Convert promise chains to async/await

This commit is contained in:
Remco Haszing 2021-08-19 17:55:46 +02:00
parent 57e820ed0c
commit ba395c9d23
No known key found for this signature in database
GPG key ID: 40D9F5FE9155FD3C
2 changed files with 81 additions and 103 deletions

View file

@ -55,26 +55,19 @@ export function createDiagnosticsAdapter(
let disposables: IDisposable[] = [];
const listeners: Record<string, IDisposable> = Object.create(null);
const resetSchema = (resource: Uri): void => {
getWorker().then((worker) => {
const resetSchema = async (resource: Uri): Promise<void> => {
const worker = await getWorker();
worker.resetSchema(String(resource));
});
};
const doValidate = (resource: Uri, languageId: string): void => {
getWorker(resource)
.then((worker) =>
worker.doValidation(String(resource)).then((diagnostics) => {
const doValidate = async (resource: Uri, languageId: string): Promise<void> => {
const worker = await getWorker(resource);
const diagnostics = await worker.doValidation(String(resource));
const markers = diagnostics.map((d) => toDiagnostics(resource, d));
const model = editor.getModel(resource);
if (model.getModeId() === languageId) {
editor.setModelMarkers(model, languageId, markers);
}
}),
)
.then(undefined, (err) => {
console.error(err);
});
};
const onModelAdd = (model: editor.IModel): void => {
@ -223,15 +216,11 @@ export function createCompletionItemProvider(
return {
triggerCharacters: [' ', ':'],
provideCompletionItems(
model: editor.IReadOnlyModel,
position: Position,
): PromiseLike<languages.CompletionList> {
async provideCompletionItems(model, position) {
const resource = model.uri;
return getWorker(resource)
.then((worker) => worker.doComplete(String(resource), fromPosition(position)))
.then((info) => {
const worker = await getWorker(resource);
const info = await worker.doComplete(String(resource), fromPosition(position));
if (!info) {
return;
}
@ -271,10 +260,9 @@ export function createCompletionItemProvider(
});
return {
isIncomplete: info.isIncomplete,
incomplete: info.isIncomplete,
suggestions: items,
};
});
},
};
}
@ -319,20 +307,18 @@ function toMarkedStringArray(
export function createHoverProvider(getWorker: WorkerAccessor): languages.HoverProvider {
return {
provideHover(model, position) {
async provideHover(model, position) {
const resource = model.uri;
return getWorker(resource)
.then((worker) => worker.doHover(String(resource), fromPosition(position)))
.then((info) => {
const worker = await getWorker(resource);
const info = await worker.doHover(String(resource), fromPosition(position));
if (!info) {
return;
}
return {
range: toRange(info.range),
contents: toMarkedStringArray(info.contents),
} as languages.Hover;
});
};
},
};
}
@ -400,17 +386,15 @@ export function createDocumentSymbolProvider(
getWorker: WorkerAccessor,
): languages.DocumentSymbolProvider {
return {
provideDocumentSymbols(model) {
async provideDocumentSymbols(model) {
const resource = model.uri;
return getWorker(resource)
.then((worker) => worker.findDocumentSymbols(String(resource)))
.then((items) => {
const worker = await getWorker(resource);
const items = await worker.findDocumentSymbols(String(resource));
if (!items) {
return;
}
return items.map((item) => toDocumentSymbol(item));
});
},
};
}
@ -429,17 +413,15 @@ export function createDocumentFormattingEditProvider(
getWorker: WorkerAccessor,
): languages.DocumentFormattingEditProvider {
return {
provideDocumentFormattingEdits(model, options) {
async provideDocumentFormattingEdits(model, options) {
const resource = model.uri;
return getWorker(resource).then((worker) =>
worker.format(String(resource), fromFormattingOptions(options)).then((edits) => {
const worker = await getWorker(resource);
const edits = await worker.format(String(resource), fromFormattingOptions(options));
if (!edits || edits.length === 0) {
return;
}
return edits.map(toTextEdit);
}),
);
},
};
}

View file

@ -69,14 +69,10 @@ export function createWorkerManager(
stopWorker();
},
getLanguageServiceWorker(...resources) {
let _client: YAMLWorker;
return getClient()
.then((client) => {
_client = client;
})
.then(() => worker.withSyncedResources(resources))
.then(() => _client);
async getLanguageServiceWorker(...resources) {
const client = await getClient();
await worker.withSyncedResources(resources);
return client;
},
};
}