smart-splits.nvim
smart-splits.nvim copied to clipboard
fix: don't ignore at_edge for floating windows
fixes #217
Before this PR, we never invoke the user's custom at_edge behavior for floating windows (see minimal repro). Instead, we return early.
This PR ensures that, for floating windows, we call handle_at_edge() just before returning early.
And since we now invoke that logic in two different places, I extracted it into its own function handle_at_edge(). So really, the only real of this PR is the additional logic introduced on line 410.
Off-topic
The noisy diff is largely due to the indentation change. Block out the noise using:
git config --global diff.colormoved dimmed-zebra
git config --global diff.colormovedws allow-indentation-change
Sorry for the delay. Been crazy at my day job.
I am pretty sure that ignoring at_edge on floating windows is intended behavior. There is a separate option float_win_behavior that controls the intended behavior for floating windows, since most users want them to be treated differently from normal windows.
See: #201 #202
I would be open to adding support for float_win_behavior = 'at-edge' to make the floating window behavior mimic the regular at-edge behavior.
I would be open to adding support for float_win_behavior = 'at-edge' to make the floating window behavior mimic the regular at-edge behavior.
That would be even better. :)
Did anything happen with this? I am running into it with LazyVim's Snacks.Explorer plugin. Since the file explorer is technically a floating window, it breaks navigation. Works great with NeoTree. I might be missing configuration to make it work, but it seems like its the floating window thats mucking it all up.
I proposed an alternative approach here but the PR hasn't moved since then.
Happy for anyone to pick this up, it should be relatively straightforward to implement.
happy to submit a PR. Not completely familiar with the inner workings here. Looking at the related changes, adding a universal handling of floating windows at_edge may not be desired. Since the edges may be different depending on configuration. Would adding an exception list for buftype/filetype be amenable?
I'm thinking about how you could have 2 projects open side by side. smart-splits needs to know the pane is in a position.
Maybe this is better fixed from the Snacks.Explorer side.
Would adding an exception list for buftype/filetype be amenable?
That sounds fine. There's already global tables for that in config, but if we need a more context-specific config entry, that's also fine.