improve some refactors
This commit is contained in:
parent
c9d7d51732
commit
114187164e
4 changed files with 17 additions and 3 deletions
|
|
@ -109,6 +109,8 @@ function M.handle_command(opts)
|
||||||
if cmd.action == 'interact' then
|
if cmd.action == 'interact' then
|
||||||
ui.toggle_interactive(cmd.interactor_cmd)
|
ui.toggle_interactive(cmd.interactor_cmd)
|
||||||
elseif cmd.action == 'run' then
|
elseif cmd.action == 'run' then
|
||||||
|
ui.run_io_view()
|
||||||
|
elseif cmd.action == 'panel' then
|
||||||
ui.toggle_panel()
|
ui.toggle_panel()
|
||||||
elseif cmd.action == 'debug' then
|
elseif cmd.action == 'debug' then
|
||||||
ui.toggle_panel({ debug = true })
|
ui.toggle_panel({ debug = true })
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,8 @@
|
||||||
---@field before_run? fun(state: cp.State)
|
---@field before_run? fun(state: cp.State)
|
||||||
---@field before_debug? fun(state: cp.State)
|
---@field before_debug? fun(state: cp.State)
|
||||||
---@field setup_code? fun(state: cp.State)
|
---@field setup_code? fun(state: cp.State)
|
||||||
|
---@field setup_io_input? fun(bufnr: integer, state: cp.State)
|
||||||
|
---@field setup_io_output? fun(bufnr: integer, state: cp.State)
|
||||||
|
|
||||||
---@class CpUI
|
---@class CpUI
|
||||||
---@field panel PanelConfig
|
---@field panel PanelConfig
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.PLATFORMS = { 'atcoder', 'codeforces', 'cses' }
|
M.PLATFORMS = { 'atcoder', 'codeforces', 'cses' }
|
||||||
M.ACTIONS = { 'run', 'next', 'prev', 'pick', 'cache', 'interact' }
|
M.ACTIONS = { 'run', 'panel', 'debug', 'next', 'prev', 'pick', 'cache', 'interact' }
|
||||||
|
|
||||||
M.PLATFORM_DISPLAY_NAMES = {
|
M.PLATFORM_DISPLAY_NAMES = {
|
||||||
atcoder = 'AtCoder',
|
atcoder = 'AtCoder',
|
||||||
|
|
|
||||||
|
|
@ -227,6 +227,7 @@ function M.ensure_io_view()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local solution_win = state.get_solution_win()
|
||||||
local io_state = state.get_io_view_state()
|
local io_state = state.get_io_view_state()
|
||||||
local output_buf, input_buf, output_win, input_win
|
local output_buf, input_buf, output_win, input_win
|
||||||
|
|
||||||
|
|
@ -236,11 +237,12 @@ function M.ensure_io_view()
|
||||||
output_win = io_state.output_win
|
output_win = io_state.output_win
|
||||||
input_win = io_state.input_win
|
input_win = io_state.input_win
|
||||||
else
|
else
|
||||||
local solution_win = state.get_solution_win()
|
|
||||||
vim.api.nvim_set_current_win(solution_win)
|
vim.api.nvim_set_current_win(solution_win)
|
||||||
|
|
||||||
vim.cmd.vsplit()
|
vim.cmd.vsplit()
|
||||||
output_win = vim.api.nvim_get_current_win()
|
output_win = vim.api.nvim_get_current_win()
|
||||||
|
local width = math.floor(vim.o.columns * 0.3)
|
||||||
|
vim.api.nvim_win_set_width(output_win, width)
|
||||||
output_buf = utils.create_buffer_with_options()
|
output_buf = utils.create_buffer_with_options()
|
||||||
vim.api.nvim_win_set_buf(output_win, output_buf)
|
vim.api.nvim_win_set_buf(output_win, output_buf)
|
||||||
|
|
||||||
|
|
@ -255,6 +257,14 @@ function M.ensure_io_view()
|
||||||
output_win = output_win,
|
output_win = output_win,
|
||||||
input_win = input_win,
|
input_win = input_win,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
local config = config_module.get_config()
|
||||||
|
if config.hooks and config.hooks.setup_io_output then
|
||||||
|
pcall(config.hooks.setup_io_output, output_buf, state)
|
||||||
|
end
|
||||||
|
if config.hooks and config.hooks.setup_io_input then
|
||||||
|
pcall(config.hooks.setup_io_input, input_buf, state)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local test_cases = cache.get_test_cases(platform, contest_id, problem_id)
|
local test_cases = cache.get_test_cases(platform, contest_id, problem_id)
|
||||||
|
|
@ -269,7 +279,7 @@ function M.ensure_io_view()
|
||||||
utils.update_buffer_content(input_buf, input_lines, nil, nil)
|
utils.update_buffer_content(input_buf, input_lines, nil, nil)
|
||||||
utils.update_buffer_content(output_buf, {}, nil, nil)
|
utils.update_buffer_content(output_buf, {}, nil, nil)
|
||||||
|
|
||||||
vim.api.nvim_set_current_win(output_win)
|
vim.api.nvim_set_current_win(solution_win)
|
||||||
end
|
end
|
||||||
|
|
||||||
function M.run_io_view()
|
function M.run_io_view()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue