feat: rust dap

This commit is contained in:
ralvescosta 2025-03-31 19:30:48 -03:00
parent 5fb0cbfb50
commit c9d04cf23b
1 changed files with 31 additions and 6 deletions

View File

@ -24,12 +24,11 @@ return {
}, },
} }
local program_name local function get_program_name()
function get_program_name() if not vim.g._last_rust_program or vim.g._last_rust_program == '' then
if not program_name then vim.g._last_rust_program = vim.fn.input('Enter binary name: ', '')
program_name = vim.fn.input('Enter program name: ', '')
end end
return program_name return vim.g._last_rust_program
end end
dap.configurations.rust = { dap.configurations.rust = {
@ -37,28 +36,54 @@ return {
type = 'codelldb', type = 'codelldb',
request = 'launch', request = 'launch',
name = 'dynamic launcher', name = 'dynamic launcher',
program = function() 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, end,
cargo = { cargo = {
args = function() args = function()
vim.notify('cargo args', vim.log.levels.INFO)
local pn = get_program_name() local pn = get_program_name()
return { 'build', string.format('--bin=%s', pn), string.format('--package=%s', pn) } return { 'build', string.format('--bin=%s', pn), string.format('--package=%s', pn) }
end, end,
filter = { filter = {
name = function() name = function()
vim.notify('cargo filters', vim.log.levels.INFO)
return get_program_name() return get_program_name()
end, end,
kind = 'bin', kind = 'bin',
}, },
}, },
env = { env = {
app_name = function() app_name = function()
vim.notify('envs', vim.log.levels.INFO)
return get_program_name() return get_program_name()
end, end,
RUST_ENV = 'local', RUST_ENV = 'local',
RUST_BACKTRACE = 'full', RUST_BACKTRACE = 'full',
}, },
cwd = '${workspaceFolder}', cwd = '${workspaceFolder}',
}, },
} }