From 9e545e88d1f8513f51d06f155576dc3444d92fbd Mon Sep 17 00:00:00 2001 From: Prabhpreet Dua <615318+prabhpreet@users.noreply.github.com> Date: Fri, 27 Mar 2026 15:02:15 +0530 Subject: [PATCH] Load configured Modelica libraries on startup Accept library paths from initialization options via both modelicaPath and libraries. Filter the configured values to non-empty strings, resolve them to file URIs, and load each library during server initialization so configured Modelica paths are available to the analyzer. --- server/src/server.ts | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/server/src/server.ts b/server/src/server.ts index 5a162aa..7d3c220 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -43,6 +43,7 @@ import * as LSP from 'vscode-languageserver/node'; import { TextDocument } from 'vscode-languageserver-textdocument'; import url from 'node:url'; import fs from 'node:fs/promises'; +import path from 'node:path'; import { initializeParser } from './parser'; import Analyzer from './analyzer'; @@ -69,7 +70,7 @@ export class ModelicaServer { public static async initialize( connection: LSP.Connection, - { capabilities, workspaceFolders }: LSP.InitializeParams, + { capabilities, workspaceFolders, initializationOptions }: LSP.InitializeParams, ): Promise { // Initialize logger setLoggerOptions({ @@ -85,7 +86,27 @@ export class ModelicaServer { await analyzer.loadLibrary(workspace.uri, true); } } - // TODO: add libraries as well + + const configuredLibraries = [ + ...(Array.isArray( + (initializationOptions as { modelicaPath?: unknown } | undefined)?.modelicaPath, + ) + ? (initializationOptions as { modelicaPath: unknown[] }).modelicaPath.filter( + (value): value is string => typeof value === 'string' && value.length > 0, + ) + : []), + ...(Array.isArray((initializationOptions as { libraries?: unknown } | undefined)?.libraries) + ? (initializationOptions as { libraries: unknown[] }).libraries.filter( + (value): value is string => typeof value === 'string' && value.length > 0, + ) + : []), + ]; + + for (const libraryPath of configuredLibraries) { + const libraryUri = url.pathToFileURL(path.resolve(libraryPath)).toString(); + logger.debug(`Loading configured library '${libraryPath}'`); + await analyzer.loadLibrary(libraryUri, false); + } logger.debug('Initialized'); return new ModelicaServer(analyzer, capabilities, connection);