@@ -48,21 +48,19 @@ export async function activate(context: vscode.ExtensionContext) {
48
48
ctx = await Ctx . create ( config , context , serverPath ) ;
49
49
50
50
// Commands which invokes manually via command palette, shortcut, etc.
51
- ctx . registerCommand ( 'reload' , ( ctx ) => {
52
- return async ( ) => {
53
- vscode . window . showInformationMessage ( 'Reloading rust-analyzer...' ) ;
54
- // @DanTup maneuver
55
- // https://github.com/microsoft/vscode/issues/45774#issuecomment-373423895
56
- await deactivate ( ) ;
57
- for ( const sub of ctx . subscriptions ) {
58
- try {
59
- sub . dispose ( ) ;
60
- } catch ( e ) {
61
- log . error ( e ) ;
62
- }
51
+
52
+ // Reloading is inspired by @DanTup maneuver: https://github.com/microsoft/vscode/issues/45774#issuecomment-373423895
53
+ ctx . registerCommand ( 'reload' , _ => async ( ) => {
54
+ void vscode . window . showInformationMessage ( 'Reloading rust-analyzer...' ) ;
55
+ await deactivate ( ) ;
56
+ while ( context . subscriptions . length > 0 ) {
57
+ try {
58
+ context . subscriptions . pop ( ) ! . dispose ( ) ;
59
+ } catch ( err ) {
60
+ log . error ( "Dispose error:" , err ) ;
63
61
}
64
- await activate ( context ) ;
65
- } ;
62
+ }
63
+ await activate ( context ) . catch ( log . error ) ;
66
64
} ) ;
67
65
68
66
ctx . registerCommand ( 'analyzerStatus' , commands . analyzerStatus ) ;
@@ -96,7 +94,7 @@ export async function activate(context: vscode.ExtensionContext) {
96
94
}
97
95
98
96
export async function deactivate ( ) {
99
- await ctx ?. client ? .stop ( ) ;
97
+ await ctx ?. client . stop ( ) ;
100
98
ctx = undefined ;
101
99
}
102
100
0 commit comments