@@ -35,14 +35,24 @@ export class DebugSessionTracker
3535 * The modules are kept in an array to maintain the load order of the modules.
3636 */
3737 private modules = new Map < vscode . DebugSession , DebugProtocol . Module [ ] > ( ) ;
38- private modulesChanged = new vscode . EventEmitter < void > ( ) ;
38+ private modulesChanged = new vscode . EventEmitter <
39+ vscode . DebugSession | undefined
40+ > ( ) ;
3941
4042 /**
4143 * Fired when modules are changed for any active debug session.
4244 *
4345 * Use `debugSessionModules` to retieve the active modules for a given debug session.
4446 */
45- onDidChangeModules : vscode . Event < void > = this . modulesChanged . event ;
47+ onDidChangeModules : vscode . Event < vscode . DebugSession | undefined > =
48+ this . modulesChanged . event ;
49+
50+ constructor ( ) {
51+ this . onDidChangeModules ( this . moduleChangedListener , this ) ;
52+ vscode . debug . onDidChangeActiveDebugSession ( ( session ) =>
53+ this . modulesChanged . fire ( session ) ,
54+ ) ;
55+ }
4656
4757 dispose ( ) {
4858 this . modules . clear ( ) ;
@@ -70,7 +80,27 @@ export class DebugSessionTracker
7080 /** Clear information from the active session. */
7181 private onExit ( session : vscode . DebugSession ) {
7282 this . modules . delete ( session ) ;
73- this . modulesChanged . fire ( ) ;
83+ this . modulesChanged . fire ( undefined ) ;
84+ }
85+
86+ private showModulesTreeView ( showModules : boolean ) {
87+ vscode . commands . executeCommand (
88+ "setContext" ,
89+ "lldb-dap.showModules" ,
90+ showModules ,
91+ ) ;
92+ }
93+
94+ private moduleChangedListener ( session : vscode . DebugSession | undefined ) {
95+ if ( ! session ) {
96+ this . showModulesTreeView ( false ) ;
97+ return ;
98+ }
99+
100+ if ( session == vscode . debug . activeDebugSession ) {
101+ const sessionHasModules = this . modules . get ( session ) != undefined ;
102+ this . showModulesTreeView ( sessionHasModules ) ;
103+ }
74104 }
75105
76106 private onDidSendMessage (
@@ -103,7 +133,7 @@ export class DebugSessionTracker
103133 break ;
104134 }
105135 this . modules . set ( session , modules ) ;
106- this . modulesChanged . fire ( ) ;
136+ this . modulesChanged . fire ( session ) ;
107137 }
108138 }
109139}
0 commit comments