@@ -7,7 +7,7 @@ import { startDebugSession, getDebugConfiguration } from '../debug';
7
7
8
8
const quickPickButtons = [ { iconPath : new vscode . ThemeIcon ( "save" ) , tooltip : "Save as a launch.json configurtation." } ] ;
9
9
10
- async function selectRunnable ( ctx : Ctx , prevRunnable ?: RunnableQuickPick , showButtons : boolean = true ) : Promise < RunnableQuickPick | undefined > {
10
+ async function selectRunnable ( ctx : Ctx , prevRunnable ?: RunnableQuickPick , debuggeeOnly = false , showButtons : boolean = true ) : Promise < RunnableQuickPick | undefined > {
11
11
const editor = ctx . activeRustEditor ;
12
12
const client = ctx . client ;
13
13
if ( ! editor || ! client ) return ;
@@ -33,9 +33,20 @@ async function selectRunnable(ctx: Ctx, prevRunnable?: RunnableQuickPick, showBu
33
33
) {
34
34
continue ;
35
35
}
36
+
37
+ if ( debuggeeOnly && ( r . label . startsWith ( 'doctest' ) || r . label . startsWith ( 'cargo' ) ) ) {
38
+ continue ;
39
+ }
36
40
items . push ( new RunnableQuickPick ( r ) ) ;
37
41
}
38
42
43
+ if ( items . length === 0 ) {
44
+ // it is the debug case, run always has at least 'cargo check ...'
45
+ // see crates\rust-analyzer\src\main_loop\handlers.rs, handle_runnables
46
+ vscode . window . showErrorMessage ( "There's no debug target!" ) ;
47
+ return ;
48
+ }
49
+
39
50
return await new Promise ( ( resolve ) => {
40
51
const disposables : vscode . Disposable [ ] = [ ] ;
41
52
const close = ( result ?: RunnableQuickPick ) => {
@@ -107,7 +118,7 @@ export function debug(ctx: Ctx): Cmd {
107
118
let prevDebuggee : RunnableQuickPick | undefined ;
108
119
109
120
return async ( ) => {
110
- const item = await selectRunnable ( ctx , prevDebuggee ) ;
121
+ const item = await selectRunnable ( ctx , prevDebuggee , true ) ;
111
122
if ( ! item ) return ;
112
123
113
124
item . detail = 'restart' ;
@@ -147,7 +158,7 @@ async function makeDebugConfig(ctx: Ctx, item: RunnableQuickPick): Promise<void>
147
158
148
159
export function newDebugConfig ( ctx : Ctx ) : Cmd {
149
160
return async ( ) => {
150
- const item = await selectRunnable ( ctx , undefined , false ) ;
161
+ const item = await selectRunnable ( ctx , undefined , true , false ) ;
151
162
if ( ! item ) return ;
152
163
153
164
await makeDebugConfig ( ctx , item ) ;
0 commit comments