fix: cleanup clearcol() manual calls in favor of per-filetype
This commit is contained in:
parent
d4fd02499d
commit
0fb247f18b
3 changed files with 57 additions and 10 deletions
7
after/ftplugin/cptest.lua
Normal file
7
after/ftplugin/cptest.lua
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
vim.opt_local.number = false
|
||||
vim.opt_local.relativenumber = false
|
||||
vim.opt_local.statuscolumn = ""
|
||||
vim.opt_local.signcolumn = "no"
|
||||
vim.opt_local.foldcolumn = "0"
|
||||
vim.opt_local.wrap = true
|
||||
vim.opt_local.linebreak = true
|
||||
|
|
@ -27,6 +27,7 @@ local state = {
|
|||
saved_session = nil,
|
||||
test_cases = nil,
|
||||
test_states = {},
|
||||
test_panel_active = false,
|
||||
}
|
||||
|
||||
local constants = require("cp.constants")
|
||||
|
|
@ -193,6 +194,53 @@ local function debug_problem()
|
|||
end)
|
||||
end
|
||||
|
||||
local function toggle_test_panel()
|
||||
if state.test_panel_active then
|
||||
if state.saved_session then
|
||||
vim.cmd(("source %s"):format(state.saved_session))
|
||||
vim.fn.delete(state.saved_session)
|
||||
state.saved_session = nil
|
||||
end
|
||||
state.test_panel_active = false
|
||||
logger.log("test panel closed")
|
||||
return
|
||||
end
|
||||
|
||||
local problem_id = get_current_problem()
|
||||
if not problem_id then
|
||||
return
|
||||
end
|
||||
|
||||
state.saved_session = vim.fn.tempname()
|
||||
vim.cmd(("mksession! %s"):format(state.saved_session))
|
||||
|
||||
vim.cmd("silent only")
|
||||
|
||||
local test_buf = vim.api.nvim_create_buf(false, true)
|
||||
vim.api.nvim_set_current_buf(test_buf)
|
||||
vim.bo.filetype = "cptest"
|
||||
vim.bo.bufhidden = "wipe"
|
||||
|
||||
local test_lines = {
|
||||
" 1 ✓ PASS 12ms",
|
||||
" 2 ✗ FAIL 45ms",
|
||||
"> 3 ✓ PASS 8ms",
|
||||
" 4 ? PENDING",
|
||||
"",
|
||||
"── Test 3 ──",
|
||||
"Input: │ Expected: │ Actual:",
|
||||
"5 3 │ 8 │ 8",
|
||||
"",
|
||||
"j/k: navigate <space>: toggle <enter>: run q: quit",
|
||||
}
|
||||
|
||||
vim.api.nvim_buf_set_lines(test_buf, 0, -1, false, test_lines)
|
||||
vim.bo.modifiable = false
|
||||
|
||||
state.test_panel_active = true
|
||||
logger.log("test panel opened")
|
||||
end
|
||||
|
||||
---@param delta number 1 for next, -1 for prev
|
||||
---@param language? string
|
||||
local function navigate_problem(delta, language)
|
||||
|
|
@ -341,6 +389,8 @@ function M.handle_command(opts)
|
|||
run_problem()
|
||||
elseif cmd.action == "debug" then
|
||||
debug_problem()
|
||||
elseif cmd.action == "test" then
|
||||
toggle_test_panel()
|
||||
elseif cmd.action == "next" then
|
||||
navigate_problem(1, cmd.language)
|
||||
elseif cmd.action == "prev" then
|
||||
|
|
|
|||
|
|
@ -12,14 +12,6 @@
|
|||
local M = {}
|
||||
local constants = require("cp.constants")
|
||||
|
||||
function M.clearcol()
|
||||
vim.api.nvim_set_option_value("number", false, { scope = "local" })
|
||||
vim.api.nvim_set_option_value("relativenumber", false, { scope = "local" })
|
||||
vim.api.nvim_set_option_value("statuscolumn", "", { scope = "local" })
|
||||
vim.api.nvim_set_option_value("signcolumn", "no", { scope = "local" })
|
||||
vim.api.nvim_set_option_value("foldcolumn", "0", { scope = "local" })
|
||||
end
|
||||
|
||||
---@return WindowState
|
||||
function M.save_layout()
|
||||
local windows = {}
|
||||
|
|
@ -136,12 +128,10 @@ local function default_tile(source_buf, input_buf, output_buf)
|
|||
vim.cmd.vsplit()
|
||||
vim.api.nvim_set_current_buf(output_buf)
|
||||
vim.bo.filetype = "cp"
|
||||
M.clearcol()
|
||||
vim.cmd(("vertical resize %d"):format(math.floor(vim.o.columns * 0.3)))
|
||||
vim.cmd.split()
|
||||
vim.api.nvim_set_current_buf(input_buf)
|
||||
vim.bo.filetype = "cp"
|
||||
M.clearcol()
|
||||
vim.cmd.wincmd("h")
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue