From f136409df29851e6361488a7c889f006f02541d4 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 5 Jan 2018 14:50:21 -0800 Subject: [PATCH] Make jvm heap size in vscode-concourse language server configurable by user --- .../commons-vscode/src/launch-util.ts | 15 ++++++++++++++- vscode-extensions/vscode-concourse/lib/Main.ts | 1 + vscode-extensions/vscode-concourse/package.json | 10 ++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/vscode-extensions/commons-vscode/src/launch-util.ts b/vscode-extensions/commons-vscode/src/launch-util.ts index 5fc5bd85b..39a31b720 100644 --- a/vscode-extensions/commons-vscode/src/launch-util.ts +++ b/vscode-extensions/commons-vscode/src/launch-util.ts @@ -33,12 +33,25 @@ export interface ActivatorOptions { clientOptions: LanguageClientOptions; launcher: (context: VSCode.ExtensionContext) => string; jvmHeap?: string; + workspaceOptions?: VSCode.WorkspaceConfiguration; classpath?: (context: VSCode.ExtensionContext, javaVersion: number) => string[]; } +type JavaOptions = { + heap?: string +} + +function getUserDefinedJvmHeap(wsOpts : VSCode.WorkspaceConfiguration, dflt : string) : string { + if (!wsOpts) { + return dflt; + } + let javaOptions : JavaOptions = wsOpts.get("java"); + return javaOptions.heap || dflt; +} + export function activate(options: ActivatorOptions, context: VSCode.ExtensionContext): Promise { let DEBUG = options.DEBUG; - let jvmHeap = options.jvmHeap; + let jvmHeap = getUserDefinedJvmHeap(options.workspaceOptions, options.jvmHeap); if (options.CONNECT_TO_LS) { return connectToLS(context, options); } else { diff --git a/vscode-extensions/vscode-concourse/lib/Main.ts b/vscode-extensions/vscode-concourse/lib/Main.ts index d027ac7b8..fa7ec0804 100644 --- a/vscode-extensions/vscode-concourse/lib/Main.ts +++ b/vscode-extensions/vscode-concourse/lib/Main.ts @@ -36,6 +36,7 @@ export function activate(context: VSCode.ExtensionContext) { extensionId: 'vscode-concourse', launcher: (context: VSCode.ExtensionContext) => Path.resolve(context.extensionPath, 'jars/language-server.jar'), jvmHeap: "48m", + workspaceOptions: VSCode.workspace.getConfiguration("concourse.ls"), clientOptions: { documentSelector: [ PIPELINE_LANGUAGE_ID, TASK_LANGUAGE_ID ] } diff --git a/vscode-extensions/vscode-concourse/package.json b/vscode-extensions/vscode-concourse/package.json index ee8d86b3b..808de0171 100644 --- a/vscode-extensions/vscode-concourse/package.json +++ b/vscode-extensions/vscode-concourse/package.json @@ -28,6 +28,16 @@ "onLanguage:concourse-task-yaml" ], "contributes": { + "configuration": { + "type" : "object", + "title": "Concourse Language Server Options", + "properties": { + "concourse.ls.java.heap": { + "type": ["string", "null"], + "description" : "Passed as an `-Xmx` argument to the concourse language server process" + } + } + }, "languages": [ { "id": "concourse-pipeline-yaml",