astro-ghostcms/.pnpm-store/v3/files/7b/5666b75c28269eba211aeb88094...

162 lines
8.3 KiB
Plaintext
Raw Normal View History

2024-02-14 19:45:06 +00:00
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLanguageService = void 0;
const language_core_1 = require("@volar/language-core");
const documents_1 = require("./documents");
const autoInsert = require("./features/provideAutoInsertionEdit");
const callHierarchy = 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 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 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");
function createLanguageService(languageContext, servicePlugins, env) {
const context = createServiceContext();
return {
getTriggerCharacters: () => servicePlugins.map(service => service.triggerCharacters ?? []).flat(),
getAutoFormatTriggerCharacters: () => servicePlugins.map(service => service.autoFormatTriggerCharacters ?? []).flat(),
getSignatureHelpTriggerCharacters: () => servicePlugins.map(service => service.signatureHelpTriggerCharacters ?? []).flat(),
getSignatureHelpRetriggerCharacters: () => servicePlugins.map(service => service.signatureHelpRetriggerCharacters ?? []).flat(),
format: format.register(context),
getFoldingRanges: foldingRanges.register(context),
getSelectionRanges: selectionRanges.register(context),
findLinkedEditingRanges: linkedEditing.register(context),
findDocumentSymbols: documentSymbols.register(context),
findDocumentColors: documentColors.register(context),
getColorPresentations: colorPresentations.register(context),
doValidation: diagnostics.register(context),
findReferences: references.register(context),
findFileReferences: fileReferences.register(context),
findDefinition: definition.register(context, 'provideDefinition', language_core_1.isDefinitionEnabled),
findTypeDefinition: definition.register(context, 'provideTypeDefinition', language_core_1.isTypeDefinitionEnabled),
findImplementations: definition.register(context, 'provideImplementation', language_core_1.isImplementationEnabled),
prepareRename: renamePrepare.register(context),
doRename: rename.register(context),
getEditsForFileRename: fileRename.register(context),
getSemanticTokens: semanticTokens.register(context),
doHover: hover.register(context),
doComplete: completions.register(context),
doCodeActions: codeActions.register(context),
doCodeActionResolve: codeActionResolve.register(context),
doCompletionResolve: completionResolve.register(context),
getSignatureHelp: signatureHelp.register(context),
doCodeLens: codeLens.register(context),
doCodeLensResolve: codeLensResolve.register(context),
findDocumentHighlights: documentHighlight.register(context),
findDocumentLinks: documentLink.register(context),
doDocumentLinkResolve: documentLinkResolve.register(context),
findWorkspaceSymbols: workspaceSymbol.register(context),
doAutoInsert: autoInsert.register(context),
doDocumentDrop: documentDrop.register(context),
getInlayHints: inlayHints.register(context),
doInlayHintResolve: inlayHintResolve.register(context),
callHierarchy: callHierarchy.register(context),
dispose: () => context.services.forEach(service => service[1].dispose?.()),
context,
};
function createServiceContext() {
const context = {
language: languageContext,
documents: (0, documents_1.createDocumentProvider)(languageContext.files),
env,
inject: (key, ...args) => {
for (const service of context.services) {
if (context.disabledServicePlugins.has(service[1])) {
continue;
}
const provide = service[1].provide?.[key];
if (provide) {
return provide(...args);
}
}
throw `No service provide ${key}`;
},
services: [],
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';
},
},
},
disabledVirtualFileUris: new Set(),
disabledServicePlugins: new WeakSet(),
};
for (const servicePlugin of servicePlugins) {
context.services.push([servicePlugin, servicePlugin.create(context)]);
}
return context;
}
}
exports.createLanguageService = createLanguageService;
//# sourceMappingURL=languageService.js.map