@@ -106,9 +106,11 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
106
106
return this . workspace . getFolder ( resource ) ;
107
107
}
108
108
109
- public addFolders ( foldersToAdd : URI [ ] ) : TPromise < void > {
109
+ public addFolders ( foldersToAdd : URI [ ] ) : TPromise < void > ;
110
+ public addFolders ( foldersToAdd : { uri : URI , name ?: string } [ ] ) : TPromise < void > ;
111
+ public addFolders ( folders : URI [ ] | { uri : URI , name ?: string } [ ] ) : TPromise < void > {
110
112
assert . ok ( this . jsonEditingService , 'Workbench is not initialized yet' ) ;
111
- return this . workspaceEditingQueue . queue ( ( ) => this . doAddFolders ( foldersToAdd ) ) ;
113
+ return this . workspaceEditingQueue . queue ( ( ) => this . doAddFolders ( folders ) ) ;
112
114
}
113
115
114
116
public removeFolders ( foldersToRemove : URI [ ] ) : TPromise < void > {
@@ -130,7 +132,7 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
130
132
return false ;
131
133
}
132
134
133
- private doAddFolders ( foldersToAdd : URI [ ] ) : TPromise < void > {
135
+ private doAddFolders ( foldersToAdd : ( URI | { uri : URI , name ?: string } ) [ ] ) : TPromise < void > {
134
136
if ( this . getWorkbenchState ( ) !== WorkbenchState . WORKSPACE ) {
135
137
return TPromise . as ( void 0 ) ; // we need a workspace to begin with
136
138
}
@@ -144,23 +146,40 @@ export class WorkspaceService extends Disposable implements IWorkspaceConfigurat
144
146
const workspaceConfigFolder = dirname ( this . getWorkspace ( ) . configuration . fsPath ) ;
145
147
146
148
foldersToAdd . forEach ( folderToAdd => {
147
- if ( this . contains ( currentWorkspaceFolderUris , folderToAdd ) ) {
149
+ let folderResource : URI ;
150
+ let folderName : string ;
151
+ if ( URI . isUri ( folderToAdd ) ) {
152
+ folderResource = folderToAdd ;
153
+ } else {
154
+ folderResource = folderToAdd . uri ;
155
+ folderName = folderToAdd . name ;
156
+ }
157
+
158
+ if ( this . contains ( currentWorkspaceFolderUris , folderResource ) ) {
148
159
return ; // already existing
149
160
}
150
161
162
+ let storedFolder : IStoredWorkspaceFolder ;
163
+
151
164
// File resource: use "path" property
152
- if ( folderToAdd . scheme === Schemas . file ) {
153
- storedFoldersToAdd . push ( {
154
- path : massageFolderPathForWorkspace ( folderToAdd . fsPath , workspaceConfigFolder , currentStoredFolders )
155
- } ) ;
165
+ if ( folderResource . scheme === Schemas . file ) {
166
+ storedFolder = {
167
+ path : massageFolderPathForWorkspace ( folderResource . fsPath , workspaceConfigFolder , currentStoredFolders )
168
+ } ;
156
169
}
157
170
158
171
// Any other resource: use "uri" property
159
172
else {
160
- storedFoldersToAdd . push ( {
161
- uri : folderToAdd . toString ( true )
162
- } ) ;
173
+ storedFolder = {
174
+ uri : folderResource . toString ( true )
175
+ } ;
176
+ }
177
+
178
+ if ( folderName ) {
179
+ storedFolder . name = folderName ;
163
180
}
181
+
182
+ storedFoldersToAdd . push ( storedFolder ) ;
164
183
} ) ;
165
184
166
185
if ( storedFoldersToAdd . length > 0 ) {
0 commit comments