11local M = {}
22
3+ --- @alias RARunnablesChoice { choice : integer , runnables : RARunnable[] }
4+
35--- @class CommandCache
46local cache = {
57 --- @type RARunnableArgs | nil
68 last_debuggable = nil ,
7- --- @type { choice : integer , runnables : RARunnable[] }
9+ --- @type RARunnablesChoice
810 last_runnable = nil ,
9- --- @type { choice : integer , runnables : RARunnable[] }
11+ --- @type RARunnablesChoice
1012 last_testable = nil ,
1113}
1214
@@ -33,34 +35,49 @@ M.set_last_debuggable = function(args)
3335 cache .last_debuggable = args
3436end
3537
36- M .execute_last_debuggable = function ()
38+ --- @param executableArgsOverride ? string[]
39+ M .execute_last_debuggable = function (executableArgsOverride )
3740 local args = cache .last_debuggable
3841 if args then
42+ if type (executableArgsOverride ) == ' table' and # executableArgsOverride > 0 then
43+ args .executableArgs = executableArgsOverride
44+ end
3945 local rt_dap = require (' rustaceanvim.dap' )
4046 rt_dap .start (args )
4147 else
4248 local debuggables = require (' rustaceanvim.commands.debuggables' )
43- debuggables ()
49+ debuggables .debuggables (executableArgsOverride )
50+ end
51+ end
52+
53+ --- @param choice RARunnablesChoice
54+ --- @param executableArgsOverride ? string[]
55+ local function override_executable_args_if_set (choice , executableArgsOverride )
56+ if type (executableArgsOverride ) == ' table' and # executableArgsOverride > 0 then
57+ choice .runnables [choice .choice ].args .executableArgs = executableArgsOverride
4458 end
4559end
4660
47- M .execute_last_testable = function ()
61+ M .execute_last_testable = function (executableArgsOverride )
4862 local action = cache .last_testable
4963 local runnables = require (' rustaceanvim.runnables' )
5064 if action then
65+ override_executable_args_if_set (action , executableArgsOverride )
5166 runnables .run_command (action .choice , action .runnables )
5267 else
53- runnables .runnables { tests_only = true }
68+ runnables .runnables ( executableArgsOverride , { tests_only = true })
5469 end
5570end
5671
57- M .execute_last_runnable = function ()
72+ --- @param executableArgsOverride ? string[]
73+ M .execute_last_runnable = function (executableArgsOverride )
5874 local action = cache .last_runnable
5975 local runnables = require (' rustaceanvim.runnables' )
6076 if action then
77+ override_executable_args_if_set (action , executableArgsOverride )
6178 runnables .run_command (action .choice , action .runnables )
6279 else
63- runnables .runnables ()
80+ runnables .runnables (executableArgsOverride )
6481 end
6582end
6683
0 commit comments