Skip to content

Commit 7e90ada

Browse files
committed
Merge remote-tracking branch 'upstream/lsp-refactored-code' into initial-unit-tests-setup
2 parents f361e9d + dfcc337 commit 7e90ada

31 files changed

+679
-604
lines changed

vscode/src/commands/buildOperations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
limitations under the License.
1515
*/
1616

17-
import { LOGGER } from "../extension";
17+
import { LOGGER } from "../logger";
1818
import { l10n } from "../localiser";
1919
import { extCommands, nbCommands } from "./commands";
2020
import { ICommand } from "./types";

vscode/src/commands/commands.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { appendPrefixToCommand } from "../utils";
1919

2020
export const extCommands = {
2121
configureRunSettings: appendPrefixToCommand('workspace.configureRunSettings'),
22-
newFromTemplate : appendPrefixToCommand('workspace.new'),
22+
newFromTemplate: appendPrefixToCommand('workspace.new'),
2323
newProject: appendPrefixToCommand('workspace.newproject'),
2424
openTest: appendPrefixToCommand('open.test'),
2525
deleteCache: appendPrefixToCommand('delete.cache'),
@@ -48,6 +48,8 @@ export const extCommands = {
4848
nbEventListener: appendPrefixToCommand('addEventListener'),
4949
selectEditorProjs: appendPrefixToCommand('select.editor.projects'),
5050
attachDebugger: appendPrefixToCommand("java.attachDebugger.connector"),
51+
loadWorkspaceTests: appendPrefixToCommand("load.workspace.tests"),
52+
projectDeleteEntry: "javals.foundProjects.deleteEntry"
5153
}
5254

5355
export const builtInCommands = {
@@ -60,6 +62,7 @@ export const builtInCommands = {
6062
quickAccess: 'workbench.action.quickOpen',
6163
openSettings: 'workbench.action.openSettings',
6264
startDebug: 'workbench.action.debug.start',
65+
focusReplDebug: 'workbench.debug.action.focusRepl',
6366
}
6467

6568
export const nbCommands = {

vscode/src/commands/navigation.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ import { l10n } from "../localiser";
2020
import * as path from 'path';
2121
import { ICommand } from "./types";
2222
import { LanguageClient } from "vscode-languageclient/node";
23-
import { globalVars, LOGGER } from "../extension";
23+
import { globalVars } from "../extension";
24+
import { LOGGER } from '../logger';
2425
import { getContextUri, isNbCommandRegistered, wrapCommandWithProgress } from "./utils";
2526

2627
const goToTest = async (ctx: any) => {

vscode/src/commands/register.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { registerBuildOperationCommands } from "./buildOperations";
2424
import { registerRefactorCommands } from "./refactor";
2525
import { registerUtilCommands } from "./utilCommands";
2626
import { registerDebugCommands } from "./debug";
27+
import { registerRunConfigurationCommands } from "./runConfiguration";
2728

2829
type ICommandModules = Record<string, ICommand[]>;
2930

@@ -35,7 +36,8 @@ const commandModules: ICommandModules = {
3536
buildOperations: registerBuildOperationCommands,
3637
refactor: registerRefactorCommands,
3738
util: registerUtilCommands,
38-
debug: registerDebugCommands
39+
debug: registerDebugCommands,
40+
runConfiguration: registerRunConfigurationCommands
3941
}
4042

4143
export const subscribeCommands = (context: ExtensionContext) => {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*
2+
Copyright (c) 2023-2024, Oracle and/or its affiliates.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
https://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
import { extCommands } from "./commands";
18+
import { globalVars } from "../extension";
19+
import { configureRunSettings } from "../views/runConfiguration";
20+
import { ICommand } from "./types";
21+
22+
23+
const configureRunSettingsHandler = (...params: any[]) => {
24+
configureRunSettings(globalVars.extensionInfo.getExtensionContext(), params);
25+
}
26+
27+
28+
export const registerRunConfigurationCommands: ICommand[] = [{
29+
command: extCommands.configureRunSettings,
30+
handler: configureRunSettingsHandler
31+
}]

vscode/src/commands/utils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import { commands, OutputChannel, ProgressLocation, Uri, window } from "vscode";
1818
import { nbCommands } from "./commands";
1919
import { ProjectActionParams } from "../lsp/protocol";
2020
import { LanguageClient } from "vscode-languageclient/node";
21-
import { globalVars, LOGGER } from "../extension";
21+
import { globalVars } from "../extension";
2222
import { l10n } from "../localiser";
23-
import { LogLevel } from "../logger";
23+
import { LOGGER } from "../logger";
2424

2525
export const getContextUri = (ctx: any): Uri | undefined => {
2626
if (ctx?.fsPath) {
@@ -99,14 +99,14 @@ export const wrapCommandWithProgress = (lsCommand: string, title: string, log?:
9999
resolve(res);
100100
} else {
101101
if (log) {
102-
LOGGER.log(`Command ${lsCommand} takes too long to start`, LogLevel.ERROR);
102+
LOGGER.error(`Command ${lsCommand} takes too long to start`);
103103
}
104104
reject(res);
105105
}
106106
}, humanVisibleDelay);
107107
} catch (err: any) {
108108
if (log) {
109-
LOGGER.log(`command ${lsCommand} executed with error: ${JSON.stringify(err)}`, LogLevel.ERROR);
109+
LOGGER.error(`command ${lsCommand} executed with error: ${JSON.stringify(err)}`);
110110
}
111111
}
112112
} else {

vscode/src/configurations/handlers.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import { extensions, workspace } from "vscode";
1818
import { builtInConfigKeys, configKeys } from "./configuration";
1919
import { extConstants, NODE_WINDOWS_LABEL } from "../constants";
2020
import * as os from 'os';
21-
import { globalVars, LOGGER } from "../extension";
22-
import { LogLevel } from "../logger";
21+
import { globalVars } from "../extension";
22+
import { LOGGER } from "../logger";
2323
import * as path from 'path';
2424
import * as fs from 'fs';
2525

@@ -54,7 +54,7 @@ export const projectSearchRootsValueHandler = (): string => {
5454
try {
5555
projectSearchRoots = os.homedir() as string;
5656
} catch (err: any) {
57-
LOGGER.log(`Failed to obtain the user home directory due to: ${err}`, LogLevel.ERROR);
57+
LOGGER.error(`Failed to obtain the user home directory due to: ${err}`);
5858
}
5959
if (!projectSearchRoots) {
6060
projectSearchRoots = os.type() === NODE_WINDOWS_LABEL ? '%USERPROFILE%' : '$HOME'; // The launcher script may perform the env variable substitution
@@ -84,7 +84,7 @@ export const lspServerVmOptionsHandler = (): string[] => {
8484
}
8585

8686
export const isDarkColorThemeHandler = (): boolean => {
87-
const themeName: string = getBuiltinConfigurationValue(builtInConfigKeys.vscodeTheme);
87+
const themeName: string = getBuiltinConfigurationValue(builtInConfigKeys.vscodeTheme);
8888
if (!themeName) {
8989
return false;
9090
}

vscode/src/debugger/debugger.ts

Lines changed: 86 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ import { l10n } from '../localiser';
2424
import { StreamDebugAdapter } from './streamDebugAdapter';
2525
import { globalVars } from '../extension';
2626
import { extCommands, nbCommands } from '../commands/commands';
27+
import { argumentsNode, environmentVariablesNode, vmOptionsNode, workingDirectoryNode } from '../views/runConfiguration';
28+
import { initializeRunConfiguration } from '../utils';
2729

2830
export function registerDebugger(context: ExtensionContext): void {
29-
let debugTrackerFactory =new NetBeansDebugAdapterTrackerFactory();
31+
let debugTrackerFactory = new NetBeansDebugAdapterTrackerFactory();
3032
context.subscriptions.push(vscode.debug.registerDebugAdapterTrackerFactory(extConstants.COMMAND_PREFIX, debugTrackerFactory));
3133
let configInitialProvider = new NetBeansConfigurationInitialProvider();
3234
context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider(extConstants.COMMAND_PREFIX, configInitialProvider, vscode.DebugConfigurationProviderTriggerKind.Initial));
@@ -36,7 +38,12 @@ export function registerDebugger(context: ExtensionContext): void {
3638
context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider(extConstants.COMMAND_PREFIX, configResolver));
3739
context.subscriptions.push(vscode.debug.onDidTerminateDebugSession(((session) => onDidTerminateSession(session))));
3840
let debugDescriptionFactory = new NetBeansDebugAdapterDescriptionFactory();
39-
context.subscriptions.push(vscode.debug.registerDebugAdapterDescriptorFactory(extConstants.COMMAND_PREFIX, debugDescriptionFactory));
41+
context.subscriptions.push(vscode.debug.registerDebugAdapterDescriptorFactory(extConstants.COMMAND_PREFIX, debugDescriptionFactory));
42+
initializeRunConfiguration().then(initialized => {
43+
if (initialized) {
44+
context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider(extConstants.COMMAND_PREFIX, new RunConfigurationProvider()));
45+
}
46+
});
4047
};
4148

4249
class NetBeansDebugAdapterTrackerFactory implements vscode.DebugAdapterTrackerFactory {
@@ -66,13 +73,13 @@ class NetBeansDebugAdapterDescriptionFactory implements vscode.DebugAdapterDescr
6673
}
6774
} else {
6875
// resolve(new vscode.DebugAdapterServer(debugPort));
69-
const socket = net.connect(globalVars.debugPort, "127.0.0.1", () => {});
70-
socket.on("connect", () => {
71-
const adapter = new StreamDebugAdapter();
72-
socket.write(globalVars.debugHash ? globalVars.debugHash : "");
73-
adapter.connect(socket, socket);
74-
resolve(new vscode.DebugAdapterInlineImplementation(adapter));
75-
});
76+
const socket = net.connect(globalVars.debugPort, "127.0.0.1", () => { });
77+
socket.on("connect", () => {
78+
const adapter = new StreamDebugAdapter();
79+
socket.write(globalVars.debugHash ? globalVars.debugHash : "");
80+
adapter.connect(socket, socket);
81+
resolve(new vscode.DebugAdapterInlineImplementation(adapter));
82+
});
7683
}
7784
}
7885
fnc();
@@ -84,26 +91,26 @@ class NetBeansDebugAdapterDescriptionFactory implements vscode.DebugAdapterDescr
8491
class NetBeansConfigurationInitialProvider implements vscode.DebugConfigurationProvider {
8592

8693
provideDebugConfigurations(folder: vscode.WorkspaceFolder | undefined, token?: vscode.CancellationToken): vscode.ProviderResult<vscode.DebugConfiguration[]> {
87-
return this.doProvideDebugConfigurations(folder, token);
94+
return this.doProvideDebugConfigurations(folder, token);
8895
}
8996

90-
async doProvideDebugConfigurations(folder: vscode.WorkspaceFolder | undefined, _token?: vscode.CancellationToken): Promise<vscode.DebugConfiguration[]> {
91-
let c : LanguageClient = await globalVars.clientPromise.client;
97+
async doProvideDebugConfigurations(folder: vscode.WorkspaceFolder | undefined, _token?: vscode.CancellationToken): Promise<vscode.DebugConfiguration[]> {
98+
let c: LanguageClient = await globalVars.clientPromise.client;
9299
if (!folder) {
93100
return [];
94101
}
95-
var u : vscode.Uri | undefined;
102+
var u: vscode.Uri | undefined;
96103
if (folder && folder.uri) {
97104
u = folder.uri;
98105
} else {
99106
u = vscode.window.activeTextEditor?.document?.uri
100107
}
101-
let result : vscode.DebugConfiguration[] = [];
102-
const configNames : string[] | null | undefined = await vscode.commands.executeCommand(nbCommands.projectConfigurations, u?.toString());
108+
let result: vscode.DebugConfiguration[] = [];
109+
const configNames: string[] | null | undefined = await vscode.commands.executeCommand(nbCommands.projectConfigurations, u?.toString());
103110
if (configNames) {
104-
let first : boolean = true;
111+
let first: boolean = true;
105112
for (let cn of configNames) {
106-
let cname : string;
113+
let cname: string;
107114

108115
if (first) {
109116
// ignore the default config, comes first.
@@ -112,7 +119,7 @@ class NetBeansConfigurationInitialProvider implements vscode.DebugConfigurationP
112119
} else {
113120
cname = "Launch Java: " + cn;
114121
}
115-
const debugConfig : vscode.DebugConfiguration = {
122+
const debugConfig: vscode.DebugConfiguration = {
116123
name: cname,
117124
type: extConstants.COMMAND_PREFIX,
118125
request: "launch",
@@ -135,19 +142,19 @@ class NetBeansConfigurationDynamicProvider implements vscode.DebugConfigurationP
135142
}
136143

137144
provideDebugConfigurations(folder: vscode.WorkspaceFolder | undefined, token?: vscode.CancellationToken): vscode.ProviderResult<vscode.DebugConfiguration[]> {
138-
return this.doProvideDebugConfigurations(folder, this.context, this.commandValues, token);
145+
return this.doProvideDebugConfigurations(folder, this.context, this.commandValues, token);
139146
}
140147

141-
async doProvideDebugConfigurations(folder: vscode.WorkspaceFolder | undefined, context: ExtensionContext, commandValues: Map<string, string>, _token?: vscode.CancellationToken): Promise<vscode.DebugConfiguration[]> {
142-
let c : LanguageClient = await globalVars.clientPromise.client;
148+
async doProvideDebugConfigurations(folder: vscode.WorkspaceFolder | undefined, context: ExtensionContext, commandValues: Map<string, string>, _token?: vscode.CancellationToken): Promise<vscode.DebugConfiguration[]> {
149+
let c: LanguageClient = await globalVars.clientPromise.client;
143150
if (!folder) {
144151
return [];
145152
}
146-
let result : vscode.DebugConfiguration[] = [];
147-
const attachConnectors : DebugConnector[] | null | undefined = await vscode.commands.executeCommand(extCommands.attachDebugger);
153+
let result: vscode.DebugConfiguration[] = [];
154+
const attachConnectors: DebugConnector[] | null | undefined = await vscode.commands.executeCommand(extCommands.attachDebugger);
148155
if (attachConnectors) {
149156
for (let ac of attachConnectors) {
150-
const debugConfig : vscode.DebugConfiguration = {
157+
const debugConfig: vscode.DebugConfiguration = {
151158
name: ac.name,
152159
type: ac.type,
153160
request: "attach",
@@ -207,6 +214,61 @@ class NetBeansConfigurationResolver implements vscode.DebugConfigurationProvider
207214
}
208215
}
209216

217+
class RunConfigurationProvider implements vscode.DebugConfigurationProvider {
218+
219+
resolveDebugConfiguration(_folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, _token?: vscode.CancellationToken): vscode.ProviderResult<vscode.DebugConfiguration> {
220+
return new Promise<vscode.DebugConfiguration>(resolve => {
221+
resolve(config);
222+
});
223+
}
224+
225+
resolveDebugConfigurationWithSubstitutedVariables?(_folder: vscode.WorkspaceFolder | undefined, config: vscode.DebugConfiguration, _token?: vscode.CancellationToken): vscode.ProviderResult<vscode.DebugConfiguration> {
226+
return new Promise<vscode.DebugConfiguration>(resolve => {
227+
const args = argumentsNode.getValue();
228+
if (args) {
229+
if (!config.args) {
230+
config.args = args;
231+
} else {
232+
config.args = `${config.args} ${args}`;
233+
}
234+
}
235+
236+
const vmArgs = vmOptionsNode.getValue();
237+
if (vmArgs) {
238+
if (!config.vmArgs) {
239+
config.vmArgs = vmArgs;
240+
} else {
241+
config.vmArgs = `${config.vmArgs} ${vmArgs}`;
242+
}
243+
}
244+
245+
const env = environmentVariablesNode.getValue();
246+
if (env) {
247+
const envs = env.split(',');
248+
if (!config.env) {
249+
config.env = {};
250+
}
251+
for (let val of envs) {
252+
val = val.trim();
253+
const div = val.indexOf('=');
254+
if (div > 0) { // div === 0 means bad format (no ENV name)
255+
config.env[val.substring(0, div)] = val.substring(div + 1, val.length);
256+
}
257+
}
258+
}
259+
260+
const cwd = workingDirectoryNode.getValue();
261+
if (cwd) {
262+
config.cwd = cwd;
263+
}
264+
265+
resolve(config);
266+
});
267+
}
268+
269+
}
270+
271+
210272
function onDidTerminateSession(session: vscode.DebugSession): any {
211273
const config = session.configuration;
212274
if (config.env) {

0 commit comments

Comments
 (0)