@@ -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
@@ -110,11 +108,13 @@ async function bootstrap(config: Config, state: PersistentState): Promise<string
110
108
}
111
109
112
110
async function bootstrapExtension ( config : Config , state : PersistentState ) : Promise < void > {
113
- if ( config . package . releaseTag === undefined ) return ;
111
+ if ( config . package . releaseTag === null ) return ;
114
112
if ( config . channel === "stable" ) {
115
113
if ( config . package . releaseTag === NIGHTLY_TAG ) {
116
- vscode . window . showWarningMessage ( `You are running a nightly version of rust-analyzer extension.
117
- To switch to stable, uninstall the extension and re-install it from the marketplace` ) ;
114
+ void vscode . window . showWarningMessage (
115
+ `You are running a nightly version of rust-analyzer extension. ` +
116
+ `To switch to stable, uninstall the extension and re-install it from the marketplace`
117
+ ) ;
118
118
}
119
119
return ;
120
120
} ;
@@ -169,9 +169,7 @@ async function bootstrapServer(config: Config, state: PersistentState): Promise<
169
169
log . debug ( "Checked binary availability via --version" , res ) ;
170
170
log . debug ( res , "--version output:" , res . output ) ;
171
171
if ( res . status !== 0 ) {
172
- throw new Error (
173
- `Failed to execute ${ path } --version`
174
- ) ;
172
+ throw new Error ( `Failed to execute ${ path } --version` ) ;
175
173
}
176
174
177
175
return path ;
@@ -185,7 +183,7 @@ async function getServer(config: Config, state: PersistentState): Promise<string
185
183
}
186
184
return explicitPath ;
187
185
} ;
188
- if ( config . package . releaseTag === undefined ) return "rust-analyzer" ;
186
+ if ( config . package . releaseTag === null ) return "rust-analyzer" ;
189
187
190
188
let binaryName : string | undefined = undefined ;
191
189
if ( process . arch === "x64" || process . arch === "ia32" ) {
0 commit comments