@@ -139,6 +139,7 @@ import { RESTDebugPanel } from "./commands/restDebugPanel";
139139import { modifyWsFolder } from "./commands/addServerNamespaceToWorkspace" ;
140140import { WebSocketTerminalProfileProvider , launchWebSocketTerminal } from "./commands/webSocketTerminal" ;
141141import { setUpTestController } from "./commands/unitTest" ;
142+ import { pickDocument } from "./utils/documentPicker" ;
142143
143144const packageJson = vscode . extensions . getExtension ( extensionId ) . packageJSON ;
144145const extensionVersion = packageJson . version ;
@@ -1405,6 +1406,31 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
14051406 }
14061407 ) ,
14071408 vscode . commands . registerCommand ( "vscode-objectscript.compileIsfs" , ( uri ) => fileSystemProvider . compile ( uri ) ) ,
1409+ vscode . commands . registerCommand ( "vscode-objectscript.openISCDocument" , async ( ) => {
1410+ const workspaceFolders = vscode . workspace . workspaceFolders || [ ] ;
1411+ let wsFolder : vscode . WorkspaceFolder ;
1412+ if ( workspaceFolders . length == 1 ) {
1413+ // Use the current connection
1414+ wsFolder = workspaceFolders [ 0 ] ;
1415+ } else if ( workspaceFolders . length > 1 ) {
1416+ // Pick from the workspace folders
1417+ wsFolder = await vscode . window . showWorkspaceFolderPick ( ) ;
1418+ }
1419+ if ( ! wsFolder ) return ;
1420+ const api = new AtelierAPI ( wsFolder . uri ) ;
1421+ if ( ! api . active ) {
1422+ vscode . window . showErrorMessage (
1423+ "'Open InterSystems Document...' command requires an active server connection." ,
1424+ "Dismiss"
1425+ ) ;
1426+ return ;
1427+ }
1428+ const doc = await pickDocument ( api , "Open a document" ) ;
1429+ if ( ! doc ) return ;
1430+ vscode . window . showTextDocument (
1431+ DocumentContentProvider . getUri ( doc , undefined , undefined , undefined , wsFolder . uri )
1432+ ) ;
1433+ } ) ,
14081434 ...setUpTestController ( ) ,
14091435
14101436 /* Anything we use from the VS Code proposed API */
0 commit comments