|
48 | 48 | ---@return snacks.terminal.Opts opts Snacks terminal options with start_insert/auto_insert controlled by focus parameter |
49 | 49 | local function build_opts(config, env_table, focus) |
50 | 50 | focus = utils.normalize_focus(focus) |
| 51 | + local should_insert = focus and config.auto_insert ~= false |
51 | 52 | return { |
52 | 53 | env = env_table, |
53 | 54 | cwd = config.cwd, |
54 | | - start_insert = focus, |
55 | | - auto_insert = focus, |
| 55 | + start_insert = should_insert, |
| 56 | + auto_insert = should_insert, |
56 | 57 | auto_close = false, |
57 | 58 | win = vim.tbl_deep_extend("force", { |
58 | 59 | position = config.split_side, |
@@ -100,26 +101,30 @@ function M.open(cmd_string, env_table, config, focus) |
100 | 101 | terminal:toggle() |
101 | 102 | if focus then |
102 | 103 | terminal:focus() |
103 | | - local term_buf_id = terminal.buf |
104 | | - if term_buf_id and vim.api.nvim_buf_get_option(term_buf_id, "buftype") == "terminal" then |
105 | | - if terminal.win and vim.api.nvim_win_is_valid(terminal.win) then |
106 | | - vim.api.nvim_win_call(terminal.win, function() |
107 | | - vim.cmd("startinsert") |
108 | | - end) |
| 104 | + if config.auto_insert ~= false then |
| 105 | + local term_buf_id = terminal.buf |
| 106 | + if term_buf_id and vim.api.nvim_buf_get_option(term_buf_id, "buftype") == "terminal" then |
| 107 | + if terminal.win and vim.api.nvim_win_is_valid(terminal.win) then |
| 108 | + vim.api.nvim_win_call(terminal.win, function() |
| 109 | + vim.cmd("startinsert") |
| 110 | + end) |
| 111 | + end |
109 | 112 | end |
110 | 113 | end |
111 | 114 | end |
112 | 115 | else |
113 | 116 | -- Terminal is already visible |
114 | 117 | if focus then |
115 | 118 | terminal:focus() |
116 | | - local term_buf_id = terminal.buf |
117 | | - if term_buf_id and vim.api.nvim_buf_get_option(term_buf_id, "buftype") == "terminal" then |
118 | | - -- Check if window is valid before calling nvim_win_call |
119 | | - if terminal.win and vim.api.nvim_win_is_valid(terminal.win) then |
120 | | - vim.api.nvim_win_call(terminal.win, function() |
121 | | - vim.cmd("startinsert") |
122 | | - end) |
| 119 | + if config.auto_insert ~= false then |
| 120 | + local term_buf_id = terminal.buf |
| 121 | + if term_buf_id and vim.api.nvim_buf_get_option(term_buf_id, "buftype") == "terminal" then |
| 122 | + -- Check if window is valid before calling nvim_win_call |
| 123 | + if terminal.win and vim.api.nvim_win_is_valid(terminal.win) then |
| 124 | + vim.api.nvim_win_call(terminal.win, function() |
| 125 | + vim.cmd("startinsert") |
| 126 | + end) |
| 127 | + end |
123 | 128 | end |
124 | 129 | end |
125 | 130 | end |
@@ -226,11 +231,13 @@ function M.focus_toggle(cmd_string, env_table, config) |
226 | 231 | else |
227 | 232 | logger.debug("terminal", "Focus toggle: focusing terminal") |
228 | 233 | vim.api.nvim_set_current_win(claude_term_neovim_win_id) |
229 | | - if terminal.buf and vim.api.nvim_buf_is_valid(terminal.buf) then |
230 | | - if vim.api.nvim_buf_get_option(terminal.buf, "buftype") == "terminal" then |
231 | | - vim.api.nvim_win_call(claude_term_neovim_win_id, function() |
232 | | - vim.cmd("startinsert") |
233 | | - end) |
| 234 | + if config.auto_insert ~= false then |
| 235 | + if terminal.buf and vim.api.nvim_buf_is_valid(terminal.buf) then |
| 236 | + if vim.api.nvim_buf_get_option(terminal.buf, "buftype") == "terminal" then |
| 237 | + vim.api.nvim_win_call(claude_term_neovim_win_id, function() |
| 238 | + vim.cmd("startinsert") |
| 239 | + end) |
| 240 | + end |
234 | 241 | end |
235 | 242 | end |
236 | 243 | end |
|
0 commit comments