@@ -25,16 +25,7 @@ export async function deactivate() {
25
25
export async function activate (
26
26
context : vscode . ExtensionContext ,
27
27
) : Promise < RustAnalyzerExtensionApi > {
28
- if ( vscode . extensions . getExtension ( "rust-lang.rust" ) ) {
29
- vscode . window
30
- . showWarningMessage (
31
- `You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) ` +
32
- "plugins enabled. These are known to conflict and cause various functions of " +
33
- "both plugins to not work correctly. You should disable one of them." ,
34
- "Got it" ,
35
- )
36
- . then ( ( ) => { } , console . error ) ;
37
- }
28
+ conflictExtDetect ( ) ;
38
29
39
30
const ctx = new Ctx ( context , createCommands ( ) , fetchWorkspace ( ) ) ;
40
31
// VS Code doesn't show a notification when an extension fails to activate
@@ -149,7 +140,7 @@ function createCommands(): Record<string, CommandFactory> {
149
140
health : "stopped" ,
150
141
} ) ;
151
142
} ,
152
- disabled : ( _ ) => async ( ) => { } ,
143
+ disabled : ( _ ) => async ( ) => { } ,
153
144
} ,
154
145
155
146
analyzerStatus : { enabled : commands . analyzerStatus } ,
@@ -200,3 +191,30 @@ function createCommands(): Record<string, CommandFactory> {
200
191
revealDependency : { enabled : commands . revealDependency } ,
201
192
} ;
202
193
}
194
+
195
+ function conflictExtDetect ( ) {
196
+ if ( vscode . extensions . getExtension ( "rust-lang.rust" ) ) {
197
+ vscode . window
198
+ . showWarningMessage (
199
+ `You have both the rust-analyzer (rust-lang.rust-analyzer) and Rust (rust-lang.rust) ` +
200
+ "plugins enabled. These are known to conflict and cause various functions of " +
201
+ "both plugins to not work correctly. You should disable one of them." ,
202
+ "Got it"
203
+ )
204
+ . then ( ( ) => { } , console . error ) ;
205
+ }
206
+
207
+ if ( vscode . extensions . getExtension ( "panicbit.cargo" ) ) {
208
+ let isRustAnalyzerCheckOnSave = vscode . workspace . getConfiguration ( "rust-analyzer" ) . get ( "checkOnSave" ) ;
209
+ let isCargoAutomaticCheck = vscode . workspace . getConfiguration ( "cargo" ) . get ( "automaticCheck" ) ;
210
+ if ( isRustAnalyzerCheckOnSave && isCargoAutomaticCheck ) {
211
+ vscode . window
212
+ . showWarningMessage (
213
+ `You have Cargo (panicbit.cargo) enabled with 'cargo.automaticCheck' set to true(default), ` +
214
+ "you can disable it or set {\"cargo.automaticCheck\": false} in settings.json to avoid invoke cargo twice" ,
215
+ "Got it"
216
+ )
217
+ . then ( ( ) => { } , console . error ) ;
218
+ }
219
+ }
220
+ }
0 commit comments