@@ -25,6 +25,8 @@ import { IStorageService } from 'vs/platform/storage/common/storage';
2525import { clamp } from 'vs/base/common/numbers' ;
2626import { KeyCode } from 'vs/base/common/keyCodes' ;
2727import { IConfigurationRegistry , Extensions as ConfigurationExtensions } from 'vs/platform/configuration/common/configurationRegistry' ;
28+ import { ILogService } from 'vs/platform/log/common/log' ;
29+ import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService' ;
2830
2931class InspectContextKeysAction extends Action {
3032
@@ -210,13 +212,41 @@ class LogStorageAction extends Action {
210212 }
211213}
212214
215+ class LogWorkingCopiesAction extends Action {
216+
217+ static readonly ID = 'workbench.action.logWorkingCopies' ;
218+ static readonly LABEL = nls . localize ( { key : 'logWorkingCopies' , comment : [ 'A developer only action to log the working copies that exist.' ] } , "Log Working Copies" ) ;
219+
220+ constructor (
221+ id : string ,
222+ label : string ,
223+ @ILogService private logService : ILogService ,
224+ @IWorkingCopyService private workingCopyService : IWorkingCopyService
225+ ) {
226+ super ( id , label ) ;
227+ }
228+
229+ async run ( ) : Promise < void > {
230+ const msg = [
231+ `Dirty Working Copies:` ,
232+ ...this . workingCopyService . dirtyWorkingCopies . map ( workingCopy => workingCopy . resource . toString ( true ) ) ,
233+ `` ,
234+ `All Working Copies:` ,
235+ ...this . workingCopyService . workingCopies . map ( workingCopy => workingCopy . resource . toString ( true ) ) ,
236+ ] ;
237+
238+ this . logService . info ( msg . join ( '\n' ) ) ;
239+ }
240+ }
241+
213242// --- Actions Registration
214243
215244const developerCategory = nls . localize ( 'developer' , "Developer" ) ;
216245const registry = Registry . as < IWorkbenchActionRegistry > ( Extensions . WorkbenchActions ) ;
217246registry . registerWorkbenchAction ( SyncActionDescriptor . create ( InspectContextKeysAction , InspectContextKeysAction . ID , InspectContextKeysAction . LABEL ) , 'Developer: Inspect Context Keys' , developerCategory ) ;
218247registry . registerWorkbenchAction ( SyncActionDescriptor . create ( ToggleScreencastModeAction , ToggleScreencastModeAction . ID , ToggleScreencastModeAction . LABEL ) , 'Developer: Toggle Screencast Mode' , developerCategory ) ;
219248registry . registerWorkbenchAction ( SyncActionDescriptor . create ( LogStorageAction , LogStorageAction . ID , LogStorageAction . LABEL ) , 'Developer: Log Storage Database Contents' , developerCategory ) ;
249+ registry . registerWorkbenchAction ( SyncActionDescriptor . create ( LogWorkingCopiesAction , LogWorkingCopiesAction . ID , LogWorkingCopiesAction . LABEL ) , 'Developer: Log Working Copies' , developerCategory ) ;
220250
221251// Screencast Mode
222252const configurationRegistry = Registry . as < IConfigurationRegistry > ( ConfigurationExtensions . Configuration ) ;
0 commit comments