From c9d04cf23b00fc1fd59163fce44ec283e9a92756 Mon Sep 17 00:00:00 2001 From: ralvescosta Date: Mon, 31 Mar 2025 19:30:48 -0300 Subject: [PATCH] feat: rust dap --- lua/custom/plugins/rustaceanvim.lua | 37 ++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/lua/custom/plugins/rustaceanvim.lua b/lua/custom/plugins/rustaceanvim.lua index ebd9ce85..d8bab304 100644 --- a/lua/custom/plugins/rustaceanvim.lua +++ b/lua/custom/plugins/rustaceanvim.lua @@ -24,12 +24,11 @@ return { }, } - local program_name - function get_program_name() - if not program_name then - program_name = vim.fn.input('Enter program name: ', '') + local function get_program_name() + if not vim.g._last_rust_program or vim.g._last_rust_program == '' then + vim.g._last_rust_program = vim.fn.input('Enter binary name: ', '') end - return program_name + return vim.g._last_rust_program end dap.configurations.rust = { @@ -37,28 +36,54 @@ return { type = 'codelldb', request = 'launch', name = 'dynamic launcher', + program = function() - return string.format('${workspaceFolder}/target/debug/%s', get_program_name()) + local name = get_program_name() + + vim.notify('Compiling ' .. name .. '...', vim.log.levels.INFO) + + local result = vim.fn.system { + 'cargo', + 'build', + '--bin', + name, + '--package', + name, + } + + if vim.v.shell_error ~= 0 then + vim.notify('Cargo build failed:\n' .. result, vim.log.levels.ERROR) + return '' + end + + vim.notify('Binary ' .. name .. ' compiled successfully', vim.log.levels.INFO) + return string.format('${workspaceFolder}/target/debug/%s', name) end, + cargo = { args = function() + vim.notify('cargo args', vim.log.levels.INFO) local pn = get_program_name() return { 'build', string.format('--bin=%s', pn), string.format('--package=%s', pn) } end, filter = { name = function() + vim.notify('cargo filters', vim.log.levels.INFO) return get_program_name() end, kind = 'bin', }, }, + env = { app_name = function() + vim.notify('envs', vim.log.levels.INFO) return get_program_name() end, RUST_ENV = 'local', RUST_BACKTRACE = 'full', }, + cwd = '${workspaceFolder}', }, }