From 183cebbde304b53681d4ac0e06600f16f4796151 Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Sun, 8 Jun 2025 17:54:54 +0000 Subject: [PATCH 1/4] fix: toggle terminal instead of closing --- lua/claudecode/init.lua | 2 +- lua/claudecode/terminal.lua | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lua/claudecode/init.lua b/lua/claudecode/init.lua index 489785c..4e2606f 100644 --- a/lua/claudecode/init.lua +++ b/lua/claudecode/init.lua @@ -299,7 +299,7 @@ function M._create_commands() if current_mode == "v" or current_mode == "V" or current_mode == "\22" then -- \22 is CTRL-V (blockwise visual mode) vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", false) end - terminal.toggle({}) -- `opts.fargs` can be used for future enhancements. + terminal.toggle_fallback_terminal() -- `opts.fargs` can be used for future enhancements. end, { nargs = "?", desc = "Toggle the Claude Code terminal window", diff --git a/lua/claudecode/terminal.lua b/lua/claudecode/terminal.lua index 4880388..852c96a 100644 --- a/lua/claudecode/terminal.lua +++ b/lua/claudecode/terminal.lua @@ -238,7 +238,7 @@ local function open_fallback_terminal(cmd_string, env_table, effective_term_conf managed_fallback_terminal_winid = new_winid managed_fallback_terminal_bufnr = vim.api.nvim_get_current_buf() - vim.bo[managed_fallback_terminal_bufnr].bufhidden = "wipe" -- Wipe buffer when hidden (e.g., window closed) + vim.bo[managed_fallback_terminal_bufnr].bufhidden = "hide" -- Wipe buffer when hidden (e.g., window closed) -- buftype=terminal is set by termopen vim.api.nvim_set_current_win(managed_fallback_terminal_winid) @@ -571,3 +571,16 @@ function M.get_active_terminal_bufnr() end return M + +--- Toggles the Claude terminal window. +-- If the terminal is already open, it brings it to focus. +-- If it's not open, it creates a new terminal. +function M.toggle_fallback_terminal() + if is_fallback_terminal_valid() then + vim.api.nvim_set_current_win(managed_fallback_terminal_winid) + else + local cmd_string = get_claude_command() + local env_table = { CLAUDE_TERMINAL_MODE = "true" } + open_fallback_terminal(cmd_string, env_table, term_module_config) + end +end From 122fa97f2cf74b9dd80814c6954b69c759f78cad Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Sun, 8 Jun 2025 17:58:14 +0000 Subject: [PATCH 2/4] refactor: improve terminal toggle logic --- lua/claudecode/init.lua | 2 +- lua/claudecode/terminal.lua | 19 ++++--------------- 2 files changed, 5 insertions(+), 16 deletions(-) diff --git a/lua/claudecode/init.lua b/lua/claudecode/init.lua index 4e2606f..489785c 100644 --- a/lua/claudecode/init.lua +++ b/lua/claudecode/init.lua @@ -299,7 +299,7 @@ function M._create_commands() if current_mode == "v" or current_mode == "V" or current_mode == "\22" then -- \22 is CTRL-V (blockwise visual mode) vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", false) end - terminal.toggle_fallback_terminal() -- `opts.fargs` can be used for future enhancements. + terminal.toggle({}) -- `opts.fargs` can be used for future enhancements. end, { nargs = "?", desc = "Toggle the Claude Code terminal window", diff --git a/lua/claudecode/terminal.lua b/lua/claudecode/terminal.lua index 852c96a..1b2a7e3 100644 --- a/lua/claudecode/terminal.lua +++ b/lua/claudecode/terminal.lua @@ -516,9 +516,10 @@ function M.toggle(opts_override) local current_neovim_win_id = vim.api.nvim_get_current_win() if claude_term_neovim_win_id == current_neovim_win_id then - close_fallback_terminal() + vim.api.nvim_win_hide(claude_term_neovim_win_id) else - focus_fallback_terminal() -- This already calls startinsert + vim.api.nvim_set_current_win(claude_term_neovim_win_id) + vim.cmd("startinsert") end else -- Check if there's an existing Claude terminal we lost track of @@ -532,7 +533,7 @@ function M.toggle(opts_override) -- Check if we're currently in this terminal local current_neovim_win_id = vim.api.nvim_get_current_win() if existing_win == current_neovim_win_id then - close_fallback_terminal() + vim.api.nvim_win_hide(existing_win) else focus_fallback_terminal() end @@ -572,15 +573,3 @@ end return M ---- Toggles the Claude terminal window. --- If the terminal is already open, it brings it to focus. --- If it's not open, it creates a new terminal. -function M.toggle_fallback_terminal() - if is_fallback_terminal_valid() then - vim.api.nvim_set_current_win(managed_fallback_terminal_winid) - else - local cmd_string = get_claude_command() - local env_table = { CLAUDE_TERMINAL_MODE = "true" } - open_fallback_terminal(cmd_string, env_table, term_module_config) - end -end From 93e49e4160d52797029ed4ed38b0cb065fb170e4 Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Sun, 8 Jun 2025 18:02:30 +0000 Subject: [PATCH 3/4] style: format code with nix fmt --- lua/claudecode/terminal.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/lua/claudecode/terminal.lua b/lua/claudecode/terminal.lua index 1b2a7e3..a9a4180 100644 --- a/lua/claudecode/terminal.lua +++ b/lua/claudecode/terminal.lua @@ -572,4 +572,3 @@ function M.get_active_terminal_bufnr() end return M - From c25e5aa8dc6f22e81034d294ad965001f76f7a42 Mon Sep 17 00:00:00 2001 From: "blink-so[bot]" <211532188+blink-so[bot]@users.noreply.github.com> Date: Sun, 8 Jun 2025 18:05:57 +0000 Subject: [PATCH 4/4] docs: update outdated comment --- lua/claudecode/terminal.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/claudecode/terminal.lua b/lua/claudecode/terminal.lua index a9a4180..2145c39 100644 --- a/lua/claudecode/terminal.lua +++ b/lua/claudecode/terminal.lua @@ -238,7 +238,7 @@ local function open_fallback_terminal(cmd_string, env_table, effective_term_conf managed_fallback_terminal_winid = new_winid managed_fallback_terminal_bufnr = vim.api.nvim_get_current_buf() - vim.bo[managed_fallback_terminal_bufnr].bufhidden = "hide" -- Wipe buffer when hidden (e.g., window closed) + vim.bo[managed_fallback_terminal_bufnr].bufhidden = "hide" -- Hide buffer when hidden (e.g., window closed) -- buftype=terminal is set by termopen vim.api.nvim_set_current_win(managed_fallback_terminal_winid)