feat: rust dap
This commit is contained in:
parent
5fb0cbfb50
commit
c9d04cf23b
|
|
@ -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}',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue