This commit is contained in:
67
node_modules/@volar/language-service/lib/features/provideDocumentSemanticTokens.js
generated
vendored
67
node_modules/@volar/language-service/lib/features/provideDocumentSemanticTokens.js
generated
vendored
@@ -1,67 +0,0 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.register = register;
|
||||
const language_core_1 = require("@volar/language-core");
|
||||
const SemanticTokensBuilder_1 = require("../utils/SemanticTokensBuilder");
|
||||
const cancellation_1 = require("../utils/cancellation");
|
||||
const common_1 = require("../utils/common");
|
||||
const featureWorkers_1 = require("../utils/featureWorkers");
|
||||
function register(context) {
|
||||
return async (uri, range, legend, _reportProgress, // TODO
|
||||
token = cancellation_1.NoneCancellationToken) => {
|
||||
const sourceScript = context.language.scripts.get(uri);
|
||||
if (!sourceScript) {
|
||||
return;
|
||||
}
|
||||
const document = context.documents.get(uri, sourceScript.languageId, sourceScript.snapshot);
|
||||
if (!range) {
|
||||
range = {
|
||||
start: { line: 0, character: 0 },
|
||||
end: { line: document.lineCount - 1, character: document.getText().length },
|
||||
};
|
||||
}
|
||||
const tokens = await (0, featureWorkers_1.languageFeatureWorker)(context, uri, () => range, function* (docs) {
|
||||
const mapped = (0, common_1.findOverlapCodeRange)(docs[0].offsetAt(range.start), docs[0].offsetAt(range.end), docs[2], language_core_1.isSemanticTokensEnabled);
|
||||
if (mapped) {
|
||||
yield {
|
||||
start: docs[1].positionAt(mapped.start),
|
||||
end: docs[1].positionAt(mapped.end),
|
||||
};
|
||||
}
|
||||
}, (plugin, document, range) => {
|
||||
if (token?.isCancellationRequested) {
|
||||
return;
|
||||
}
|
||||
return plugin[1].provideDocumentSemanticTokens?.(document, range, legend, token);
|
||||
}, (tokens, docs) => {
|
||||
if (!docs) {
|
||||
return tokens;
|
||||
}
|
||||
return tokens
|
||||
.map(_token => {
|
||||
const range = (0, featureWorkers_1.getSourceRange)(docs, {
|
||||
start: { line: _token[0], character: _token[1] },
|
||||
end: { line: _token[0], character: _token[1] + _token[2] },
|
||||
}, language_core_1.isSemanticTokensEnabled);
|
||||
if (range) {
|
||||
return [range.start.line, range.start.character, range.end.character - range.start.character, _token[3], _token[4]];
|
||||
}
|
||||
})
|
||||
.filter(token => !!token);
|
||||
}, tokens => tokens.flat()
|
||||
// tokens => reportProgress?.(buildTokens(tokens)), // TODO: this has no effect with LSP
|
||||
);
|
||||
if (tokens) {
|
||||
return buildTokens(tokens);
|
||||
}
|
||||
};
|
||||
}
|
||||
function buildTokens(tokens) {
|
||||
const builder = new SemanticTokensBuilder_1.SemanticTokensBuilder();
|
||||
const sortedTokens = tokens.sort((a, b) => a[0] - b[0] === 0 ? a[1] - b[1] : a[0] - b[0]);
|
||||
for (const token of sortedTokens) {
|
||||
builder.push(...token);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
//# sourceMappingURL=provideDocumentSemanticTokens.js.map
|
||||
Reference in New Issue
Block a user