Files
website/node_modules/@volar/language-server/lib/serverCapabilities.js
2024-05-06 17:15:30 -04:00

91 lines
3.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getServerCapabilities = void 0;
const vscode = require("vscode-languageserver");
function getServerCapabilities(watchExts, servicePlugins, semanticTokensLegend) {
const capabilities = {
textDocumentSync: vscode.TextDocumentSyncKind.Incremental,
workspace: {
// #18
workspaceFolders: {
supported: true,
changeNotifications: true,
},
},
selectionRangeProvider: true,
foldingRangeProvider: true,
linkedEditingRangeProvider: true,
colorProvider: true,
documentSymbolProvider: true,
documentFormattingProvider: true,
documentRangeFormattingProvider: true,
referencesProvider: true,
implementationProvider: true,
definitionProvider: true,
typeDefinitionProvider: true,
callHierarchyProvider: true,
hoverProvider: true,
renameProvider: { prepareProvider: true },
signatureHelpProvider: {
triggerCharacters: [...new Set(servicePlugins.map(service => service.signatureHelpTriggerCharacters ?? []).flat())],
retriggerCharacters: [...new Set(servicePlugins.map(service => service.signatureHelpRetriggerCharacters ?? []).flat())],
},
completionProvider: {
triggerCharacters: [...new Set(servicePlugins.map(service => service.triggerCharacters ?? []).flat())],
resolveProvider: true,
},
documentHighlightProvider: true,
documentLinkProvider: { resolveProvider: true },
codeLensProvider: { resolveProvider: true },
semanticTokensProvider: {
range: true,
full: false,
legend: semanticTokensLegend,
},
codeActionProvider: {
codeActionKinds: [
vscode.CodeActionKind.Empty,
vscode.CodeActionKind.QuickFix,
vscode.CodeActionKind.Refactor,
vscode.CodeActionKind.RefactorExtract,
vscode.CodeActionKind.RefactorInline,
vscode.CodeActionKind.RefactorRewrite,
vscode.CodeActionKind.Source,
vscode.CodeActionKind.SourceFixAll,
vscode.CodeActionKind.SourceOrganizeImports,
],
resolveProvider: true,
},
inlayHintProvider: { resolveProvider: true },
workspaceSymbolProvider: true,
diagnosticProvider: {
interFileDependencies: true,
workspaceDiagnostics: false,
},
};
const characters = [...new Set(servicePlugins.map(service => service.autoFormatTriggerCharacters ?? []).flat())];
if (characters.length) {
capabilities.documentOnTypeFormattingProvider = {
firstTriggerCharacter: characters[0],
moreTriggerCharacter: characters.slice(1),
};
}
if (watchExts.length) {
capabilities.workspace = {
fileOperations: {
willRename: {
filters: [
{
pattern: {
glob: `**/*.{${watchExts.join(',')}}`
}
},
]
}
}
};
}
return capabilities;
}
exports.getServerCapabilities = getServerCapabilities;
//# sourceMappingURL=serverCapabilities.js.map