Skip to content

Commit

Permalink
Fix #2363
Browse files Browse the repository at this point in the history
Signed-off-by: yoshimoto <yoshimoto@intra-mart.jp>
  • Loading branch information
daisuke-yoshimoto authored and lmcbout committed May 10, 2019
1 parent fe6ea99 commit dd9eb6b
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 1 deletion.
31 changes: 30 additions & 1 deletion packages/java/src/browser/java-client-contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
********************************************************************************/

// Copyright (c) Red Hat.
// Licensed under EPL-1.0 license
// Function parseVMargs() copied and modified https://github.com/redhat-developer/vscode-java/blob/v0.44.0/src/javaServerStarter.ts#L105-L121

import { injectable, inject } from 'inversify';
import { MessageConnection } from 'vscode-jsonrpc';
import { CommandService } from '@theia/core/lib/common';
Expand All @@ -36,6 +40,7 @@ import {
ExecuteClientCommand
} from './java-protocol';
import { MaybePromise } from '@theia/core';
import { PreferenceService } from '@theia/core/lib/browser/preferences';

@injectable()
export class JavaClientContribution extends BaseLanguageClientContribution {
Expand All @@ -45,6 +50,9 @@ export class JavaClientContribution extends BaseLanguageClientContribution {
private readonly statusNotificationName = 'java-status-notification';
private statusBarTimeout: number | undefined;

@inject(PreferenceService)
protected readonly preferenceService: PreferenceService;

constructor(
@inject(Workspace) protected readonly workspace: Workspace,
@inject(Languages) protected readonly languages: Languages,
Expand Down Expand Up @@ -121,7 +129,28 @@ export class JavaClientContribution extends BaseLanguageClientContribution {

protected getStartParameters(): MaybePromise<JavaStartParams> {
const workspace = this.workspace.rootUri ? this.workspace.rootUri : undefined;
return { workspace };
const jvmArgs: string[] = [];
const vmargsLine = this.preferenceService.get('java.jdt.ls.vmargs', '');
this.parseVMargs(jvmArgs, vmargsLine);
return { workspace, jvmArgs };
}

private parseVMargs(params: string[], vmargsLine: string) {
if (!vmargsLine) {
return;
}
const vmargs = vmargsLine.match(/(?:[^\s"]+|"[^"]*")+/g);
if (vmargs === null) {
return;
}
vmargs.forEach(arg => {
// remove all standalone double quotes
arg = arg.replace(/(\\)?"/g, ($0, $1) => ($1 ? $0 : ''));
// unescape all escaped double quotes
arg = arg.replace(/(\\)"/g, '"');
if (params.indexOf(arg) < 0) {
params.push(arg);
}
});
}
}
1 change: 1 addition & 0 deletions packages/java/src/common/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,5 @@ export const JAVA_LANGUAGE_NAME = 'Java';

export interface JavaStartParams {
workspace?: string
jvmArgs?: string[]
}
4 changes: 4 additions & 0 deletions packages/java/src/node/java-contribution.ts
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ export class JavaContribution extends BaseLanguageServerContribution {
const command = 'java';
const args: string[] = [];

if (parameters && parameters.jvmArgs) {
parameters.jvmArgs.map(jvmArg => args.push(jvmArg));
}

if (DEBUG_MODE) {
args.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044');
}
Expand Down

0 comments on commit dd9eb6b

Please sign in to comment.