This commit is contained in:
233
node_modules/@volar/language-service/lib/languageService.js
generated
vendored
Normal file
233
node_modules/@volar/language-service/lib/languageService.js
generated
vendored
Normal file
@@ -0,0 +1,233 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.embeddedContentScheme = void 0;
|
||||
exports.createLanguageService = createLanguageService;
|
||||
exports.decodeEmbeddedDocumentUri = decodeEmbeddedDocumentUri;
|
||||
exports.encodeEmbeddedDocumentUri = encodeEmbeddedDocumentUri;
|
||||
const language_core_1 = require("@volar/language-core");
|
||||
const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
|
||||
const vscode_uri_1 = require("vscode-uri");
|
||||
const autoInsert = require("./features/provideAutoInsertSnippet");
|
||||
const hierarchy = require("./features/provideCallHierarchyItems");
|
||||
const codeActions = require("./features/provideCodeActions");
|
||||
const codeLens = require("./features/provideCodeLenses");
|
||||
const colorPresentations = require("./features/provideColorPresentations");
|
||||
const completions = require("./features/provideCompletionItems");
|
||||
const definition = require("./features/provideDefinition");
|
||||
const diagnostics = require("./features/provideDiagnostics");
|
||||
const documentColors = require("./features/provideDocumentColors");
|
||||
const documentDrop = require("./features/provideDocumentDropEdits");
|
||||
const format = require("./features/provideDocumentFormattingEdits");
|
||||
const documentHighlight = require("./features/provideDocumentHighlights");
|
||||
const documentLink = require("./features/provideDocumentLinks");
|
||||
const semanticTokens = require("./features/provideDocumentSemanticTokens");
|
||||
const documentSymbols = require("./features/provideDocumentSymbols");
|
||||
const fileReferences = require("./features/provideFileReferences");
|
||||
const fileRename = require("./features/provideFileRenameEdits");
|
||||
const foldingRanges = require("./features/provideFoldingRanges");
|
||||
const hover = require("./features/provideHover");
|
||||
const inlayHints = require("./features/provideInlayHints");
|
||||
const moniker = require("./features/provideMoniker");
|
||||
const inlineValue = require("./features/provideInlineValue");
|
||||
const linkedEditing = require("./features/provideLinkedEditingRanges");
|
||||
const references = require("./features/provideReferences");
|
||||
const rename = require("./features/provideRenameEdits");
|
||||
const renamePrepare = require("./features/provideRenameRange");
|
||||
const selectionRanges = require("./features/provideSelectionRanges");
|
||||
const signatureHelp = require("./features/provideSignatureHelp");
|
||||
const workspaceDiagnostics = require("./features/provideWorkspaceDiagnostics");
|
||||
const workspaceSymbol = require("./features/provideWorkspaceSymbols");
|
||||
const codeActionResolve = require("./features/resolveCodeAction");
|
||||
const codeLensResolve = require("./features/resolveCodeLens");
|
||||
const completionResolve = require("./features/resolveCompletionItem");
|
||||
const documentLinkResolve = require("./features/resolveDocumentLink");
|
||||
const inlayHintResolve = require("./features/resolveInlayHint");
|
||||
const workspaceSymbolResolve = require("./features/resolveWorkspaceSymbol");
|
||||
const cancellation_1 = require("./utils/cancellation");
|
||||
const uriMap_1 = require("./utils/uriMap");
|
||||
exports.embeddedContentScheme = 'volar-embedded-content';
|
||||
function createLanguageService(language, plugins, env, project) {
|
||||
const documentVersions = (0, uriMap_1.createUriMap)();
|
||||
const snapshot2Doc = new WeakMap();
|
||||
const context = {
|
||||
language,
|
||||
project,
|
||||
getLanguageService: () => langaugeService,
|
||||
documents: {
|
||||
get(uri, languageId, snapshot) {
|
||||
if (!snapshot2Doc.has(snapshot)) {
|
||||
snapshot2Doc.set(snapshot, (0, uriMap_1.createUriMap)());
|
||||
}
|
||||
const map = snapshot2Doc.get(snapshot);
|
||||
if (!map.has(uri)) {
|
||||
const version = documentVersions.get(uri) ?? 0;
|
||||
documentVersions.set(uri, version + 1);
|
||||
map.set(uri, vscode_languageserver_textdocument_1.TextDocument.create(uri.toString(), languageId, version, snapshot.getText(0, snapshot.getLength())));
|
||||
}
|
||||
return map.get(uri);
|
||||
},
|
||||
},
|
||||
env,
|
||||
inject: (key, ...args) => {
|
||||
for (const plugin of context.plugins) {
|
||||
if (context.disabledServicePlugins.has(plugin[1])) {
|
||||
continue;
|
||||
}
|
||||
const provide = plugin[1].provide?.[key];
|
||||
if (provide) {
|
||||
return provide(...args);
|
||||
}
|
||||
}
|
||||
},
|
||||
plugins: [],
|
||||
commands: {
|
||||
rename: {
|
||||
create(uri, position) {
|
||||
return {
|
||||
title: '',
|
||||
command: 'editor.action.rename',
|
||||
arguments: [
|
||||
uri,
|
||||
position,
|
||||
],
|
||||
};
|
||||
},
|
||||
is(command) {
|
||||
return command.command === 'editor.action.rename';
|
||||
},
|
||||
},
|
||||
showReferences: {
|
||||
create(uri, position, locations) {
|
||||
return {
|
||||
title: locations.length === 1 ? '1 reference' : `${locations.length} references`,
|
||||
command: 'editor.action.showReferences',
|
||||
arguments: [
|
||||
uri,
|
||||
position,
|
||||
locations,
|
||||
],
|
||||
};
|
||||
},
|
||||
is(command) {
|
||||
return command.command === 'editor.action.showReferences';
|
||||
},
|
||||
},
|
||||
setSelection: {
|
||||
create(position) {
|
||||
return {
|
||||
title: '',
|
||||
command: 'setSelection',
|
||||
arguments: [{
|
||||
selection: {
|
||||
selectionStartLineNumber: position.line + 1,
|
||||
positionLineNumber: position.line + 1,
|
||||
selectionStartColumn: position.character + 1,
|
||||
positionColumn: position.character + 1,
|
||||
},
|
||||
}],
|
||||
};
|
||||
},
|
||||
is(command) {
|
||||
return command.command === 'setSelection';
|
||||
},
|
||||
},
|
||||
},
|
||||
disabledEmbeddedDocumentUris: (0, uriMap_1.createUriMap)(),
|
||||
disabledServicePlugins: new WeakSet(),
|
||||
decodeEmbeddedDocumentUri,
|
||||
encodeEmbeddedDocumentUri,
|
||||
};
|
||||
for (const plugin of plugins) {
|
||||
context.plugins.push([plugin, plugin.create(context)]);
|
||||
}
|
||||
const langaugeService = createLanguageServiceBase(plugins, context);
|
||||
return langaugeService;
|
||||
}
|
||||
function decodeEmbeddedDocumentUri(maybeEmbeddedContentUri) {
|
||||
if (maybeEmbeddedContentUri.scheme === exports.embeddedContentScheme) {
|
||||
const embeddedCodeId = decodeURIComponent(maybeEmbeddedContentUri.authority);
|
||||
const documentUri = decodeURIComponent(maybeEmbeddedContentUri.path.substring(1));
|
||||
return [
|
||||
vscode_uri_1.URI.parse(documentUri),
|
||||
embeddedCodeId,
|
||||
];
|
||||
}
|
||||
}
|
||||
function encodeEmbeddedDocumentUri(documentUri, embeddedContentId) {
|
||||
if (embeddedContentId !== embeddedContentId.toLowerCase()) {
|
||||
console.error(`embeddedContentId must be lowercase: ${embeddedContentId}`);
|
||||
}
|
||||
return vscode_uri_1.URI.from({
|
||||
scheme: exports.embeddedContentScheme,
|
||||
authority: encodeURIComponent(embeddedContentId),
|
||||
path: '/' + encodeURIComponent(documentUri.toString()),
|
||||
});
|
||||
}
|
||||
function createLanguageServiceBase(plugins, context) {
|
||||
const tokenModifiers = plugins.map(plugin => plugin.capabilities.semanticTokensProvider?.legend?.tokenModifiers ?? []).flat();
|
||||
const tokenTypes = plugins.map(plugin => plugin.capabilities.semanticTokensProvider?.legend?.tokenTypes ?? []).flat();
|
||||
return {
|
||||
semanticTokenLegend: {
|
||||
tokenModifiers: [...new Set(tokenModifiers)],
|
||||
tokenTypes: [...new Set(tokenTypes)],
|
||||
},
|
||||
commands: plugins.map(plugin => plugin.capabilities.executeCommandProvider?.commands ?? []).flat(),
|
||||
triggerCharacters: plugins.map(plugin => plugin.capabilities.completionProvider?.triggerCharacters ?? []).flat(),
|
||||
autoFormatTriggerCharacters: plugins.map(plugin => plugin.capabilities.documentOnTypeFormattingProvider?.triggerCharacters ?? []).flat(),
|
||||
signatureHelpTriggerCharacters: plugins.map(plugin => plugin.capabilities.signatureHelpProvider?.triggerCharacters ?? []).flat(),
|
||||
signatureHelpRetriggerCharacters: plugins.map(plugin => plugin.capabilities.signatureHelpProvider?.retriggerCharacters ?? []).flat(),
|
||||
executeCommand(command, args, token = cancellation_1.NoneCancellationToken) {
|
||||
for (const plugin of context.plugins) {
|
||||
if (context.disabledServicePlugins.has(plugin[1])) {
|
||||
continue;
|
||||
}
|
||||
if (!plugin[1].executeCommand || !plugin[0].capabilities.executeCommandProvider?.commands.includes(command)) {
|
||||
continue;
|
||||
}
|
||||
return plugin[1].executeCommand(command, args, token);
|
||||
}
|
||||
},
|
||||
getDocumentFormattingEdits: format.register(context),
|
||||
getFoldingRanges: foldingRanges.register(context),
|
||||
getSelectionRanges: selectionRanges.register(context),
|
||||
getLinkedEditingRanges: linkedEditing.register(context),
|
||||
getDocumentSymbols: documentSymbols.register(context),
|
||||
getDocumentColors: documentColors.register(context),
|
||||
getColorPresentations: colorPresentations.register(context),
|
||||
getDiagnostics: diagnostics.register(context),
|
||||
getWorkspaceDiagnostics: workspaceDiagnostics.register(context),
|
||||
getReferences: references.register(context),
|
||||
getFileReferences: fileReferences.register(context),
|
||||
getDeclaration: definition.register(context, 'provideDeclaration', language_core_1.isDefinitionEnabled),
|
||||
getDefinition: definition.register(context, 'provideDefinition', language_core_1.isDefinitionEnabled),
|
||||
getTypeDefinition: definition.register(context, 'provideTypeDefinition', language_core_1.isTypeDefinitionEnabled),
|
||||
getImplementations: definition.register(context, 'provideImplementation', language_core_1.isImplementationEnabled),
|
||||
getRenameRange: renamePrepare.register(context),
|
||||
getRenameEdits: rename.register(context),
|
||||
getFileRenameEdits: fileRename.register(context),
|
||||
getSemanticTokens: semanticTokens.register(context),
|
||||
getHover: hover.register(context),
|
||||
getCompletionItems: completions.register(context),
|
||||
getCodeActions: codeActions.register(context),
|
||||
getSignatureHelp: signatureHelp.register(context),
|
||||
getCodeLenses: codeLens.register(context),
|
||||
getDocumentHighlights: documentHighlight.register(context),
|
||||
getDocumentLinks: documentLink.register(context),
|
||||
getWorkspaceSymbols: workspaceSymbol.register(context),
|
||||
getAutoInsertSnippet: autoInsert.register(context),
|
||||
getDocumentDropEdits: documentDrop.register(context),
|
||||
getInlayHints: inlayHints.register(context),
|
||||
getMoniker: moniker.register(context),
|
||||
getInlineValue: inlineValue.register(context),
|
||||
resolveCodeAction: codeActionResolve.register(context),
|
||||
resolveCompletionItem: completionResolve.register(context),
|
||||
resolveCodeLens: codeLensResolve.register(context),
|
||||
resolveDocumentLink: documentLinkResolve.register(context),
|
||||
resolveInlayHint: inlayHintResolve.register(context),
|
||||
resolveWorkspaceSymbol: workspaceSymbolResolve.register(context),
|
||||
...hierarchy.register(context),
|
||||
dispose: () => context.plugins.forEach(plugin => plugin[1].dispose?.()),
|
||||
context,
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=languageService.js.map
|
||||
Reference in New Issue
Block a user