Skip to content

Commit 803d19d

Browse files
committed
improve debugger
1 parent ed9d61b commit 803d19d

File tree

2 files changed

+29
-26
lines changed

2 files changed

+29
-26
lines changed

src/debugger/AttachDebuggerProvider.ts

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,41 +14,20 @@ interface ProcessInfoItem extends vscode.QuickPickItem {
1414
}
1515

1616
export class AttachDebuggerProvider implements vscode.DebugConfigurationProvider {
17-
private isNullOrEmpty(s?: string): boolean {
17+
protected isNullOrEmpty(s?: string): boolean {
1818
return !s || s.trim().length === 0;
1919
}
2020

21-
private getSourceRoots(): string[] {
21+
protected getSourceRoots(): string[] {
2222
var list = vscode.workspace.workspaceFolders!.map(f => { return f.uri.fsPath; });
2323
var config = <Array<string>> vscode.workspace.getConfiguration("emmylua").get("source.roots") || [];
2424
return list.concat(config.map(item => { return normalize(item); }));
2525
}
2626

27-
provideDebugConfigurations(folder: WorkspaceFolder | undefined, token?: CancellationToken): ProviderResult<DebugConfiguration[]> {
28-
var config: DebugConfiguration = {
29-
name: "Attach",
30-
type: "emmylua_attach",
31-
request: "attach",
32-
pid: 0
33-
};
34-
return [config];
35-
}
36-
3727
resolveDebugConfiguration(folder: WorkspaceFolder | undefined, debugConfiguration: AttachDebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration> {
3828
debugConfiguration.extensionPath = savedContext.extensionPath;
3929
debugConfiguration.sourcePaths = this.getSourceRoots();
40-
if (debugConfiguration.type === "emmylua_launch") {
41-
if (this.isNullOrEmpty(debugConfiguration.workingDir)) {
42-
var list = vscode.workspace.workspaceFolders!.map(f => { return f.uri.fsPath; });
43-
if (list.length > 0) {
44-
debugConfiguration.workingDir = list[0];
45-
}
46-
}
47-
if (!debugConfiguration.arguments) {
48-
debugConfiguration.arguments = [];
49-
}
50-
return debugConfiguration;
51-
}
30+
debugConfiguration.request = "attach";
5231
if (debugConfiguration.pid > 0) {
5332
return debugConfiguration;
5433
}
@@ -85,4 +64,26 @@ export class AttachDebuggerProvider implements vscode.DebugConfigurationProvider
8564
dispose() {
8665

8766
}
67+
}
68+
69+
export class AttachLaunchDebuggerProvider extends AttachDebuggerProvider {
70+
resolveDebugConfiguration(folder: WorkspaceFolder | undefined, debugConfiguration: AttachDebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration> {
71+
debugConfiguration.extensionPath = savedContext.extensionPath;
72+
debugConfiguration.sourcePaths = this.getSourceRoots();
73+
debugConfiguration.type = "emmylua_launch";
74+
debugConfiguration.request = "launch";
75+
if (this.isNullOrEmpty(debugConfiguration.workingDir)) {
76+
var list = vscode.workspace.workspaceFolders!.map(f => { return f.uri.fsPath; });
77+
if (list.length > 0) {
78+
debugConfiguration.workingDir = list[0];
79+
}
80+
}
81+
if (this.isNullOrEmpty(debugConfiguration.program)) {
82+
debugConfiguration.program = "lua";
83+
}
84+
if (!debugConfiguration.arguments) {
85+
debugConfiguration.arguments = [];
86+
}
87+
return debugConfiguration;
88+
}
8889
}

src/extension.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import * as Annotator from "./annotator";
77
import * as notifications from "./notifications";
88
import findJava from "./findJava";
99
import { LanguageClient, LanguageClientOptions, ServerOptions, StreamInfo } from "vscode-languageclient";
10-
import { AttachDebuggerProvider } from './debugger/AttachDebuggerProvider';
10+
import { AttachDebuggerProvider, AttachLaunchDebuggerProvider } from './debugger/AttachDebuggerProvider';
1111
import { MobDebuggerProvider } from './debugger/MobDebuggerProvider';
1212
import { formatText } from 'lua-fmt';
1313
import { LuaLanguageConfiguration } from './languageConfiguration';
@@ -44,8 +44,10 @@ export function activate(context: vscode.ExtensionContext) {
4444

4545
const attProvider = new AttachDebuggerProvider();
4646
savedContext.subscriptions.push(vscode.debug.registerDebugConfigurationProvider("emmylua_attach", attProvider));
47-
savedContext.subscriptions.push(vscode.debug.registerDebugConfigurationProvider("emmylua_launch", attProvider));
4847
savedContext.subscriptions.push(attProvider);
48+
const attLaunchProvider = new AttachLaunchDebuggerProvider();
49+
savedContext.subscriptions.push(vscode.debug.registerDebugConfigurationProvider("emmylua_launch", attLaunchProvider));
50+
savedContext.subscriptions.push(attLaunchProvider);
4951
const mobProvider = new MobDebuggerProvider();
5052
savedContext.subscriptions.push(vscode.debug.registerDebugConfigurationProvider("emmylua_remote", mobProvider));
5153
savedContext.subscriptions.push(vscode.debug.registerDebugConfigurationProvider("emmylua_remote_launch", mobProvider));

0 commit comments

Comments
 (0)