[Feature] add an option to prevent auto-closing float terminal on leaving the window
Current implementation is auto close term when switch from a float terminal. I found the implementation is in toggleterm.lua:
local function handle_term_leave()
local _, term = terms.identify()
if not term then return end
if config.persist_mode then term:persist_mode() end
if term:is_float() then term:close() end
end
And there is no option or callback can be used to disable this behavior.
But sometimes auto-close float terminal is not the best choice. For example, if I use a float terminal to compile or do some test job, if has error, I want to switch to code buffer to fix it without closing terminal since I need refer the output of terminal, like below:

If I use terminal in the middle of the screen, auto close terminal for switching is reasonable. But if I use float terminal on the top-right or bottom-right of the screen, auto-closing is not necessary, and in most user cases, it should be disabled.
Could you please considering to add an option flag to prevent this default behavior, so it can fit different strategy and requirement.
Thank you.
@cjun714 it has never even occurred to me that a person would position the float in the top right like you are doing in your screenshot so at first this issue seemed not to make sense since I assume that most people use it centered like I do.
Please feel free to raise a PR to add this, I'm definitely fine for this to be supported on a global and per terminal case but this must not change the defaults.
Since the use case is niche enough I won't implement this myself but it should be easy enough for you to do it. You just need to:
- Add a new option to the
Terminal:newfunction similar to all the other ones. - Update the documentation and the type annotations
- Actually check the option before auto closing
I use vim-floaterm before, and this feature is well supported. But I found your plugin provide some good features like sendline to terminal, so I try to move to this new plugin.
I modify the code, but I find also need to modify ToggleTerm ,
since vim-floaterm's implementation can handle if a float window is displayed but not be focused, in this case ToggleTerm will not toggle terminal, but just switch focus to that float window.
So I think need further design and modification. Thanks for your quick response.