cleanup window layout
This commit is contained in:
parent
3f49721657
commit
0db6fa96b4
9 changed files with 118 additions and 76 deletions
|
|
@ -35,41 +35,77 @@ function M.restore_layout(state)
|
|||
end
|
||||
|
||||
vim.cmd.diffoff()
|
||||
vim.cmd(state.layout)
|
||||
|
||||
for win, win_state in pairs(state.windows) do
|
||||
if vim.api.nvim_win_is_valid(win) then
|
||||
vim.api.nvim_set_current_win(win)
|
||||
if vim.api.nvim_get_current_buf() == win_state.bufnr then
|
||||
vim.fn.winrestview(win_state.view)
|
||||
|
||||
local problem_id = vim.fn.expand("%:t:r")
|
||||
if problem_id == "" then
|
||||
for win, win_state in pairs(state.windows) do
|
||||
if vim.api.nvim_win_is_valid(win) and vim.api.nvim_buf_is_valid(win_state.bufnr) then
|
||||
local bufname = vim.api.nvim_buf_get_name(win_state.bufnr)
|
||||
if bufname:match("%.cc$") then
|
||||
problem_id = vim.fn.fnamemodify(bufname, ":t:r")
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if vim.api.nvim_win_is_valid(state.current_win) then
|
||||
vim.api.nvim_set_current_win(state.current_win)
|
||||
if problem_id ~= "" then
|
||||
vim.cmd('silent only')
|
||||
|
||||
local base_fp = vim.fn.getcwd()
|
||||
local input = ("%s/io/%s.in"):format(base_fp, problem_id)
|
||||
local output = ("%s/io/%s.out"):format(base_fp, problem_id)
|
||||
local source = problem_id .. ".cc"
|
||||
|
||||
vim.cmd.edit(source)
|
||||
vim.cmd.vsplit(output)
|
||||
vim.bo.filetype = "cp"
|
||||
M.clearcol()
|
||||
vim.cmd(("vertical resize %d"):format(math.floor(vim.o.columns * 0.3)))
|
||||
vim.cmd.split(input)
|
||||
vim.bo.filetype = "cp"
|
||||
M.clearcol()
|
||||
vim.cmd.wincmd("h")
|
||||
else
|
||||
vim.cmd(state.layout)
|
||||
|
||||
for win, win_state in pairs(state.windows) do
|
||||
if vim.api.nvim_win_is_valid(win) then
|
||||
vim.api.nvim_set_current_win(win)
|
||||
if vim.api.nvim_get_current_buf() == win_state.bufnr then
|
||||
vim.fn.winrestview(win_state.view)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if vim.api.nvim_win_is_valid(state.current_win) then
|
||||
vim.api.nvim_set_current_win(state.current_win)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function M.setup_diff_layout(actual_output, expected_output, input_file)
|
||||
vim.cmd.diffoff()
|
||||
vim.cmd.only()
|
||||
vim.cmd('silent only')
|
||||
|
||||
local output_lines = vim.split(actual_output, "\n")
|
||||
local output_buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_buf_set_lines(output_buf, 0, -1, false, output_lines)
|
||||
vim.bo[output_buf].filetype = "cpoutput"
|
||||
vim.bo[output_buf].filetype = "cp"
|
||||
|
||||
vim.cmd.edit()
|
||||
vim.api.nvim_set_current_buf(output_buf)
|
||||
vim.cmd.diffthis()
|
||||
M.clearcol()
|
||||
vim.cmd.diffthis()
|
||||
|
||||
vim.cmd.vsplit(expected_output)
|
||||
vim.cmd.diffthis()
|
||||
vim.bo.filetype = "cp"
|
||||
M.clearcol()
|
||||
vim.cmd.diffthis()
|
||||
|
||||
vim.cmd.wincmd("h")
|
||||
vim.cmd(("botright split %s"):format(input_file))
|
||||
vim.bo.filetype = "cp"
|
||||
M.clearcol()
|
||||
vim.cmd.wincmd("k")
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue