fix: cleanup clearcol() manual calls in favor of per-filetype

This commit is contained in:
Barrett Ruth 2025-09-15 18:15:21 -04:00
parent d4fd02499d
commit 0fb247f18b
3 changed files with 57 additions and 10 deletions

View 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

View file

@ -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

View file

@ -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