toggleterm.nvim icon indicating copy to clipboard operation
toggleterm.nvim copied to clipboard

[Feature] add an option to prevent auto-closing float terminal on leaving the window

Open cjun714 opened this issue 2 years ago • 2 comments

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:

image

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 avatar Mar 30 '23 14:03 cjun714

@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:new function similar to all the other ones.
  • Update the documentation and the type annotations
  • Actually check the option before auto closing

akinsho avatar Mar 30 '23 14:03 akinsho

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.

cjun714 avatar Mar 30 '23 15:03 cjun714