From 85ff96bf71a5778fe7f5850a1cba79669d558b51 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Fri, 8 Aug 2025 13:31:38 +0200 Subject: [PATCH] feat: add Shift+Enter keybinding for new line in terminal Change-Id: I9a5eee55b87db158dbf93266ef809ca10216b070 Signed-off-by: Thomas Kosiewski Co-authored-by: alex35mil <4244251+alex35mil@users.noreply.github.com> --- lua/claudecode/terminal/snacks.lua | 19 ++++++++++++++++--- lua/claudecode/types.lua | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/lua/claudecode/terminal/snacks.lua b/lua/claudecode/terminal/snacks.lua index 75e3bb1..5775992 100644 --- a/lua/claudecode/terminal/snacks.lua +++ b/lua/claudecode/terminal/snacks.lua @@ -45,7 +45,7 @@ end ---@param config ClaudeCodeTerminalConfig Terminal configuration ---@param env_table table Environment variables to set for the terminal process ---@param focus boolean|nil Whether to focus the terminal when opened (defaults to true) ----@return table options Snacks terminal options with start_insert/auto_insert controlled by focus parameter +---@return snacks.terminal.Opts opts Snacks terminal options with start_insert/auto_insert controlled by focus parameter local function build_opts(config, env_table, focus) focus = utils.normalize_focus(focus) return { @@ -58,8 +58,21 @@ local function build_opts(config, env_table, focus) width = config.split_width_percentage, height = 0, relative = "editor", - }, config.snacks_win_opts or {}), - } + keys = { + claude_new_line = { + "", + function() + vim.api.nvim_feedkeys("\\", "t", true) + vim.defer_fn(function() + vim.api.nvim_feedkeys("\r", "t", true) + end, 10) + end, + mode = "t", + desc = "New line", + }, + }, + } --[[@as snacks.win.Config]], config.snacks_win_opts or {}), + } --[[@as snacks.terminal.Opts]] end function M.setup() diff --git a/lua/claudecode/types.lua b/lua/claudecode/types.lua index 4acaac1..53f4217 100644 --- a/lua/claudecode/types.lua +++ b/lua/claudecode/types.lua @@ -75,7 +75,7 @@ ---@field provider_opts ClaudeCodeTerminalProviderOptions? ---@field auto_close boolean ---@field env table ----@field snacks_win_opts table +---@field snacks_win_opts snacks.win.Config -- Port range configuration ---@class ClaudeCodePortRange