@@ -228,10 +228,8 @@ export class WorkspaceD extends EventEmitter implements
228228 let self = this ;
229229 console . log ( "provideDocumentFormattingEdits" ) ;
230230 return new Promise ( ( resolve , reject ) => {
231- if ( ! self . dfmtReady ) {
232- console . log ( "Resolve null" ) ;
231+ if ( ! self . dfmtReady )
233232 return resolve ( null ) ;
234- }
235233 self . request ( { cmd : "dfmt" , code : document . getText ( ) } ) . then ( ( formatted ) => {
236234 let lastLine = document . lineCount ;
237235 let lastLineLastCol = document . lineAt ( lastLine - 1 ) . range . end . character ;
@@ -247,10 +245,8 @@ export class WorkspaceD extends EventEmitter implements
247245 let self = this ;
248246 console . log ( "lint" ) ;
249247 return new Promise ( ( resolve , reject ) => {
250- if ( ! self . dscannerReady ) {
251- console . log ( "Resolve null" ) ;
248+ if ( ! self . dscannerReady )
252249 return resolve ( null ) ;
253- }
254250 self . request ( { cmd : "dscanner" , subcmd : "lint" , file : document . uri . fsPath } ) . then ( issues => {
255251 let diagnostics : vscode . Diagnostic [ ] = [ ] ;
256252 if ( issues && issues . length )
@@ -296,13 +292,37 @@ export class WorkspaceD extends EventEmitter implements
296292 }
297293
298294 killServer ( ) : Thenable < any > {
295+ if ( ! this . dcdReady )
296+ return new Promise ( ( resolve , reject ) => { reject ( ) ; } ) ;
299297 return this . request ( { cmd : "dcd" , subcmd : "kill-server" } ) ;
300298 }
301299
302300 restartServer ( ) : Thenable < any > {
301+ if ( ! this . dcdReady )
302+ return new Promise ( ( resolve , reject ) => { reject ( ) ; } ) ;
303303 return this . request ( { cmd : "dcd" , subcmd : "restart-server" } ) ;
304304 }
305305
306+ updateImports ( ) : Thenable < boolean > {
307+ return new Promise ( ( resolve , reject ) => {
308+ if ( ! this . dubReady )
309+ reject ( ) ;
310+ this . request ( { cmd : "dub" , subcmd : "update" } ) . then ( ( success ) => {
311+ if ( ! success )
312+ return resolve ( success ) ;
313+ if ( this . dcdReady ) {
314+ this . request ( { cmd : "dcd" , subcmd : "refresh-imports" } ) . then ( ( ) => {
315+ resolve ( true ) ;
316+ this . request ( { cmd : "dub" , subcmd : "list:import" } ) . then ( console . log ) ;
317+ } ) ;
318+ } else {
319+ vscode . window . showWarningMessage ( "Could not update DCD. Please restart DCD if its not working properly" ) ;
320+ resolve ( true ) ;
321+ }
322+ } ) ;
323+ } ) ;
324+ }
325+
306326 private mapLintType ( type : string ) : vscode . DiagnosticSeverity {
307327 switch ( type ) {
308328 case "warn" :
0 commit comments