Skip to main content

Language server capabilities

InterlisLanguageServer#initialize wires up the capabilities exposed to clients. The resulting payload looks like:

{
"capabilities": {
"positionEncoding": "utf-16",
"textDocumentSync": {
"openClose": true,
"change": 2,
"save": {
"includeText": false
}
},
"completionProvider": {
"triggerCharacters": [".", ":"],
"resolveProvider": false
},
"documentFormattingProvider": true,
"documentOnTypeFormattingProvider": {
"firstTriggerCharacter": "="
},
"definitionProvider": true,
"renameProvider": true,
"documentSymbolProvider": true,
"executeCommandProvider": {
"commands": [
"interlis.compile",
"interlis.uml",
"interlis.uml.plant"
]
}
}
}

Key listeners and providers derived from these capabilities:

Event / ProviderImplementationNotes
textDocument/didOpenInterlisTextDocumentService#didOpenCompiles freshly opened files and streams diagnostics.
textDocument/didChangeInterlisTextDocumentService#didChangeUpdates the in-memory document tracker & invalidates caches.
textDocument/didSaveInterlisTextDocumentService#didSavePerforms authoritative compilation using on-disk content.
textDocument/didCloseInterlisTextDocumentService#didCloseClears diagnostics and releases document state.
textDocument/completionInterlisTextDocumentService#completionProvides context-aware completions (triggered by . or :).
textDocument/formattingInterlisTextDocumentService#formattingRuns ili2c pretty printer for whole-document formatting.
textDocument/onTypeFormattingInterlisTextDocumentService#onTypeFormattingAuto-inserts INTERLIS templates after typing =.
textDocument/definitionInterlisTextDocumentService#definitionResolves definitions across workspace & referenced models.
textDocument/renameInterlisTextDocumentService#rename + InterlisRenameProviderApplies validated renames across declarations and references.
textDocument/documentSymbolInterlisTextDocumentService#documentSymbolBuilds outline nodes from the compiled AST.
workspace/didChangeConfigurationInterlisWorkspaceService#didChangeConfigurationRefreshes server-side model repository settings.

The VS Code extension maps these hooks to familiar IDE features such as the outline tree, problems panel, and rename refactorings.