feat: clearcol

This commit is contained in:
Barrett Ruth 2025-10-23 12:10:14 -04:00
parent 114187164e
commit 13933fc7fd
6 changed files with 40 additions and 1 deletions

View file

@ -56,6 +56,7 @@
local M = {}
local constants = require('cp.constants')
local helpers = require('cp.helpers')
local utils = require('cp.utils')
-- defaults per the new single schema
@ -103,7 +104,13 @@ M.defaults = {
default_language = 'cpp',
},
},
hooks = { before_run = nil, before_debug = nil, setup_code = nil },
hooks = {
before_run = nil,
before_debug = nil,
setup_code = nil,
setup_io_input = helpers.clearcol,
setup_io_output = helpers.clearcol,
},
debug = false,
scrapers = constants.PLATFORMS,
filename = nil,
@ -231,6 +238,8 @@ function M.setup(user_config)
before_run = { cfg.hooks.before_run, { 'function', 'nil' }, true },
before_debug = { cfg.hooks.before_debug, { 'function', 'nil' }, true },
setup_code = { cfg.hooks.setup_code, { 'function', 'nil' }, true },
setup_io_input = { cfg.hooks.setup_io_input, { 'function', 'nil' }, true },
setup_io_output = { cfg.hooks.setup_io_output, { 'function', 'nil' }, true },
})
vim.validate({

11
lua/cp/helpers.lua Normal file
View file

@ -0,0 +1,11 @@
local M = {}
---@param bufnr integer
function M.clearcol(bufnr)
vim.bo[bufnr].signcolumn = 'no'
vim.bo[bufnr].statuscolumn = ''
vim.bo[bufnr].number = false
vim.bo[bufnr].relativenumber = false
end
return M

View file

@ -1,8 +1,11 @@
local M = {}
local config_module = require('cp.config')
local helpers = require('cp.helpers')
local logger = require('cp.log')
M.helpers = helpers
if vim.fn.has('nvim-0.10.0') == 0 then
logger.log('Requires nvim-0.10.0+', vim.log.levels.ERROR)
return {}

View file

@ -3,6 +3,7 @@ local M = {}
local cache = require('cp.cache')
local config_module = require('cp.config')
local constants = require('cp.constants')
local helpers = require('cp.helpers')
local logger = require('cp.log')
local scraper = require('cp.scraper')
local state = require('cp.state')
@ -178,6 +179,9 @@ function M.setup_problem(problem_id, language)
if ok then
vim.b[prov.bufnr].cp_setup_done = true
end
elseif not vim.b[prov.bufnr].cp_setup_done then
helpers.clearcol(prov.bufnr)
vim.b[prov.bufnr].cp_setup_done = true
end
cache.set_file_state(
vim.fn.fnamemodify(source_file, ':p'),
@ -202,6 +206,9 @@ function M.setup_problem(problem_id, language)
if ok then
vim.b[bufnr].cp_setup_done = true
end
elseif not vim.b[bufnr].cp_setup_done then
helpers.clearcol(bufnr)
vim.b[bufnr].cp_setup_done = true
end
cache.set_file_state(
vim.fn.expand('%:p'),

View file

@ -1,10 +1,13 @@
local M = {}
local helpers = require('cp.helpers')
local utils = require('cp.utils')
local function create_none_diff_layout(parent_win, expected_content, actual_content)
local expected_buf = utils.create_buffer_with_options()
local actual_buf = utils.create_buffer_with_options()
helpers.clearcol(expected_buf)
helpers.clearcol(actual_buf)
vim.api.nvim_set_current_win(parent_win)
vim.cmd.split()
@ -42,6 +45,8 @@ end
local function create_vim_diff_layout(parent_win, expected_content, actual_content)
local expected_buf = utils.create_buffer_with_options()
local actual_buf = utils.create_buffer_with_options()
helpers.clearcol(expected_buf)
helpers.clearcol(actual_buf)
vim.api.nvim_set_current_win(parent_win)
vim.cmd.split()
@ -89,6 +94,7 @@ end
local function create_git_diff_layout(parent_win, expected_content, actual_content)
local diff_buf = utils.create_buffer_with_options()
helpers.clearcol(diff_buf)
vim.api.nvim_set_current_win(parent_win)
vim.cmd.split()

View file

@ -6,6 +6,7 @@ local M = {}
local cache = require('cp.cache')
local config_module = require('cp.config')
local constants = require('cp.constants')
local helpers = require('cp.helpers')
local layouts = require('cp.ui.layouts')
local logger = require('cp.log')
local state = require('cp.state')
@ -262,6 +263,7 @@ function M.ensure_io_view()
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
@ -440,6 +442,7 @@ function M.toggle_panel(panel_opts)
vim.cmd('silent only')
local tab_buf = utils.create_buffer_with_options()
helpers.clearcol(tab_buf)
local main_win = vim.api.nvim_get_current_win()
vim.api.nvim_win_set_buf(main_win, tab_buf)
vim.api.nvim_set_option_value('filetype', 'cp', { buf = tab_buf })