Skip to content

Commit 65617ff

Browse files
snjezafbricon
authored andcommitted
Create a launch configuration for eclipse-jdtls/eclipse.jdt.ls#799
Signed-off-by: Snjezana Peco <snjezana.peco@redhat.com>
1 parent b780274 commit 65617ff

2 files changed

Lines changed: 32 additions & 2 deletions

File tree

.vscode/launch.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,20 @@
2727
},
2828
"preLaunchTask": "npm: watch"
2929
},
30+
{
31+
"name": "Launch Extension - JDTLS Client",
32+
"type": "extensionHost",
33+
"request": "launch",
34+
"runtimeExecutable": "${execPath}",
35+
"args": ["--extensionDevelopmentPath=${workspaceRoot}" ],
36+
"stopOnEntry": false,
37+
"sourceMaps": true,
38+
"outFiles": [ "${workspaceRoot}/out/src/**" ],
39+
"env": {
40+
"JDTLS_CLIENT_PORT": "5036"
41+
},
42+
"preLaunchTask": "npm: watch"
43+
},
3044
{
3145
"name": "Launch Tests",
3246
"type": "extensionHost",

src/extension.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import * as path from 'path';
44
import * as os from 'os';
55
import * as fs from 'fs';
66
import { workspace, extensions, ExtensionContext, window, StatusBarAlignment, commands, ViewColumn, Uri, CancellationToken, TextDocumentContentProvider, TextEditor, WorkspaceConfiguration, languages, IndentAction, ProgressLocation, InputBoxOptions, Selection, Position } from 'vscode';
7-
import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation } from 'vscode-languageclient';
7+
import { ExecuteCommandParams, ExecuteCommandRequest, LanguageClient, LanguageClientOptions, RevealOutputChannelOn, ServerOptions, Position as LSPosition, Location as LSLocation, StreamInfo } from 'vscode-languageclient';
88
import { collectionJavaExtensions } from './plugin';
99
import { prepareExecutable, awaitServerConnection } from './javaServerStarter';
1010
import * as requirements from './requirements';
1111
import { Commands } from './commands';
1212
import { StatusNotification, ClassFileContentsRequest, ProjectConfigurationUpdateRequest, MessageType, ActionableNotification, FeatureStatus, ActionableMessage, CompileWorkspaceRequest, CompileWorkspaceStatus, ProgressReportNotification, ExecuteClientCommandRequest, SendNotificationRequest } from './protocol';
1313
import { ExtensionAPI } from './extension.api';
14+
import * as net from 'net';
1415

1516
let oldConfig;
1617
let lastStatus;
@@ -80,7 +81,22 @@ export function activate(context: ExtensionContext): Promise<ExtensionAPI> {
8081
let serverOptions;
8182
let port = process.env['SERVER_PORT'];
8283
if (!port) {
83-
serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration());
84+
let lsPort = process.env['JDTLS_CLIENT_PORT'];
85+
if (!lsPort) {
86+
serverOptions = prepareExecutable(requirements, workspacePath, getJavaConfiguration());
87+
} else {
88+
let connectionInfo = {
89+
port: lsPort
90+
};
91+
serverOptions = () => {
92+
let socket = net.connect(connectionInfo);
93+
let result: StreamInfo = {
94+
writer: socket,
95+
reader: socket
96+
};
97+
return Promise.resolve(result);
98+
};
99+
}
84100
} else {
85101
// used during development
86102
serverOptions = awaitServerConnection.bind(null, port);

0 commit comments

Comments
 (0)