diff --git a/doc/cp.nvim.txt b/doc/cp.nvim.txt index 2956d4b..3e450ce 100644 --- a/doc/cp.nvim.txt +++ b/doc/cp.nvim.txt @@ -114,8 +114,12 @@ COMMANDS *cp-commands* Changes saved to both cache and disk on exit, taking effect immediately in :CP run and CLI. - Keybindings: + Keybindings (configurable via |EditConfig|): q Save all and exit editor + ]t Jump to next test column + [t Jump to previous test column + gd Delete current test column + ga Add new test column at end Normal window navigation Examples: > @@ -348,6 +352,15 @@ run CSES problems with Rust using the single schema: {format_verdict} (|VerdictFormatter|, default: nil) Custom verdict line formatter. See |cp-verdict-format|. + *EditConfig* + Fields: ~ + {next_test_key} (string|nil, default: ']t') Jump to next test. + {prev_test_key} (string|nil, default: '[t') Jump to previous test. + {delete_test_key} (string|nil, default: 'gd') Delete current test. + {add_test_key} (string|nil, default: 'ga') Add new test. + {save_and_exit_key} (string|nil, default: 'q') Save and exit editor. + All keys are nil-able. Set to nil to disable. + *cp.PanelConfig* Fields: ~ {diff_mode} (string, default: "none") Diff backend: "none", diff --git a/lua/cp/config.lua b/lua/cp/config.lua index 764f324..5b3b584 100644 --- a/lua/cp/config.lua +++ b/lua/cp/config.lua @@ -65,9 +65,17 @@ ---@field prev_test_key string|nil ---@field format_verdict VerdictFormatter +---@class EditConfig +---@field next_test_key string|nil +---@field prev_test_key string|nil +---@field delete_test_key string|nil +---@field add_test_key string|nil +---@field save_and_exit_key string|nil + ---@class CpUI ---@field ansi boolean ---@field run RunConfig +---@field edit EditConfig ---@field panel PanelConfig ---@field diff DiffConfig ---@field picker string|nil @@ -154,6 +162,13 @@ M.defaults = { prev_test_key = '', format_verdict = helpers.default_verdict_formatter, }, + edit = { + next_test_key = ']t', + prev_test_key = '[t', + delete_test_key = 'gd', + add_test_key = 'ga', + save_and_exit_key = 'q', + }, panel = { diff_mode = 'none', max_output_lines = 50 }, diff = { git = { @@ -329,6 +344,41 @@ function M.setup(user_config) cfg.ui.run.format_verdict, 'function', }, + edit_next_test_key = { + cfg.ui.edit.next_test_key, + function(v) + return v == nil or (type(v) == 'string' and #v > 0) + end, + 'nil or non-empty string', + }, + edit_prev_test_key = { + cfg.ui.edit.prev_test_key, + function(v) + return v == nil or (type(v) == 'string' and #v > 0) + end, + 'nil or non-empty string', + }, + delete_test_key = { + cfg.ui.edit.delete_test_key, + function(v) + return v == nil or (type(v) == 'string' and #v > 0) + end, + 'nil or non-empty string', + }, + add_test_key = { + cfg.ui.edit.add_test_key, + function(v) + return v == nil or (type(v) == 'string' and #v > 0) + end, + 'nil or non-empty string', + }, + save_and_exit_key = { + cfg.ui.edit.save_and_exit_key, + function(v) + return v == nil or (type(v) == 'string' and #v > 0) + end, + 'nil or non-empty string', + }, }) for id, lang in pairs(cfg.languages) do