blob: d03d746a4ae1dbd0c1858781c61e00a1b2f9bdc8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// serves source documents carried by the language server at tinyvm:/NAME.zc.
function createSourceProvider(request, isReady, delay = ms => new Promise(resolve => setTimeout(resolve, ms))) {
return {
async provideTextDocumentContent(uri) {
for (let waited = 0; !isReady() && waited < 10000; waited += 100) await delay(100);
if (!isReady()) return '// the language server is not running\n';
try {
const result = await request('zc/source', { path: uri.path });
return typeof result === 'string' ? result : '// no such built-in source\n';
} catch (error) {
return '// the language server could not give this source\n';
}
}
};
}
module.exports = { createSourceProvider };
|