mirror of
https://github.com/mfussenegger/nvim-dap
synced 2024-09-16 14:24:03 +02:00
Overload terminal_win_cmd
return value
This commit is contained in:
parent
80b3f35e10
commit
41f5c1553e
2 changed files with 24 additions and 14 deletions
12
lua/dap.lua
12
lua/dap.lua
|
@ -52,17 +52,9 @@ M.defaults = setmetatable(
|
|||
exception_breakpoints = 'default';
|
||||
---@type "statement"|"line"|"instruction"
|
||||
stepping_granularity = 'statement';
|
||||
|
||||
---@type string|fun(): number bufnr, number|nil win
|
||||
terminal_win_cmd = 'belowright new';
|
||||
create_terminal_buffer = function ()
|
||||
local cur_win = api.nvim_get_current_win()
|
||||
api.nvim_command(M.defaults.fallback.terminal_win_cmd)
|
||||
local terminal_win = api.nvim_get_current_win()
|
||||
local terminal_buf = api.nvim_get_current_buf()
|
||||
vim.wo[terminal_win].number = false
|
||||
vim.wo[terminal_win].relativenumber = false
|
||||
api.nvim_set_current_win(cur_win)
|
||||
return terminal_buf, api.nvim_win_get_width(terminal_win), api.nvim_win_get_height(terminal_win)
|
||||
end,
|
||||
focus_terminal = false;
|
||||
auto_continue_if_many_stopped = true;
|
||||
},
|
||||
|
|
|
@ -185,6 +185,23 @@ local function launch_external_terminal(terminal, args)
|
|||
end
|
||||
|
||||
|
||||
local function create_terminal_buf(terminal_win_cmd)
|
||||
local cur_win = api.nvim_get_current_win()
|
||||
if type(terminal_win_cmd) == "string" then
|
||||
api.nvim_command(terminal_win_cmd)
|
||||
local bufnr = api.nvim_get_current_buf()
|
||||
local win = api.nvim_get_current_win()
|
||||
vim.wo[win].number = false
|
||||
vim.wo[win].relativenumber = false
|
||||
api.nvim_set_current_win(cur_win)
|
||||
return bufnr, win
|
||||
else
|
||||
assert(type(terminal_win_cmd) == "function", "terminal_win_cmd must be a string or a function")
|
||||
return terminal_win_cmd()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local function run_in_terminal(self, request)
|
||||
local body = request.arguments
|
||||
log.debug('run_in_terminal', body)
|
||||
|
@ -209,9 +226,10 @@ local function run_in_terminal(self, request)
|
|||
if terminal_buf and api.nvim_buf_is_valid(terminal_buf) then
|
||||
api.nvim_buf_set_option(terminal_buf, 'modified', false)
|
||||
else
|
||||
terminal_buf, terminal_width, terminal_height = dap().defaults[self.config.type].create_terminal_buffer()
|
||||
terminal_width = terminal_width or 80
|
||||
terminal_height = terminal_height or 40
|
||||
local terminal_win
|
||||
terminal_buf, terminal_win = create_terminal_buf(settings.terminal_win_cmd)
|
||||
terminal_width = terminal_win and api.nvim_win_get_width(terminal_win) or 80
|
||||
terminal_height = terminal_win and api.nvim_win_get_height(terminal_win) or 40
|
||||
api.nvim_buf_set_name(terminal_buf, '[dap-terminal] ' .. body.args[1])
|
||||
end
|
||||
local ok, path = pcall(api.nvim_buf_get_option, cur_buf, 'path')
|
||||
|
@ -246,7 +264,7 @@ local function run_in_terminal(self, request)
|
|||
end,
|
||||
}
|
||||
jobid = vim.fn.jobstart(body.args, opts)
|
||||
if dap().defaults[self.config.type].focus_terminal then
|
||||
if settings.focus_terminal then
|
||||
for _, win in pairs(api.nvim_tabpage_list_wins(0)) do
|
||||
if api.nvim_win_get_buf(win) == terminal_buf then
|
||||
api.nvim_set_current_win(win)
|
||||
|
|
Loading…
Reference in a new issue