diff options
Diffstat (limited to 'server/src/server.ts')
-rw-r--r-- | server/src/server.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/server/src/server.ts b/server/src/server.ts index 5803b81..5d99ca3 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -17,6 +17,7 @@ import { TextEdit, } from "vscode-languageserver/node"; import { basename } from "path"; +import { homedir } from "os"; import { TextDocument } from "vscode-languageserver-textdocument"; import { PublishDiagnosticsParams } from "vscode-languageserver-protocol"; @@ -192,6 +193,19 @@ async function getWorkspaceFoldersSafe(): Promise<WorkspaceFolder[]> { } } +function expandTildePaths(paths: string, settings: NavigatorSettings): string { + const path = paths; + // Consider that this not a Windows feature, + // so, Windows "%USERPROFILE%" currently is ignored (and rarely used). + if (path.startsWith("~/")) { + const newPath = homedir() + path.slice(1); + nLog("Expanding tilde path '" + path + "' to '" + newPath + "'", settings); + return newPath; + } else { + return path; + } +} + async function getDocumentSettings(resource: string): Promise<NavigatorSettings> { if (!hasConfigurationCapability) { return globalSettings; @@ -204,6 +218,26 @@ async function getDocumentSettings(resource: string): Promise<NavigatorSettings> }); if (!result) return globalSettings; const resolvedSettings = { ...globalSettings, ...result }; + + if(resolvedSettings.includePaths) { + resolvedSettings.includePaths = resolvedSettings.includePaths.map((path: string) => expandTildePaths(path, resolvedSettings)); + } + if(resolvedSettings.perlPath) { + resolvedSettings.perlPath = expandTildePaths(resolvedSettings.perlPath, resolvedSettings); + } + if(resolvedSettings.perlimportsProfile) { + resolvedSettings.perlimportsProfile = expandTildePaths(resolvedSettings.perlimportsProfile, resolvedSettings); + } + if(resolvedSettings.perltidyProfile) { + resolvedSettings.perltidyProfile = expandTildePaths(resolvedSettings.perltidyProfile, resolvedSettings); + } + if(resolvedSettings.perlcriticProfile) { + resolvedSettings.perlcriticProfile = expandTildePaths(resolvedSettings.perlcriticProfile, resolvedSettings); + } + if(resolvedSettings.perlEnv) { + resolvedSettings.perlEnv = Object.fromEntries(Object.entries(resolvedSettings.perlEnv).map(([key, value]) => [key, expandTildePaths(value, resolvedSettings)])); + } + documentSettings.set(resource, resolvedSettings); return resolvedSettings; } |