smart-splits.nvim icon indicating copy to clipboard operation
smart-splits.nvim copied to clipboard

fix: don't ignore at_edge for floating windows

Open thenbe opened this issue 1 year ago • 6 comments
trafficstars

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

thenbe avatar Jun 27 '24 02:06 thenbe

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.

mrjones2014 avatar Jul 02 '24 14:07 mrjones2014

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. :)

thenbe avatar Jul 02 '24 19:07 thenbe

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.

jkellz-dev avatar Mar 10 '25 23:03 jkellz-dev

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.

mrjones2014 avatar Mar 11 '25 15:03 mrjones2014

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.

Screenshot 2025-03-11 at 11 13 47

Maybe this is better fixed from the Snacks.Explorer side.

jkellz-dev avatar Mar 11 '25 18:03 jkellz-dev

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.

mrjones2014 avatar Mar 11 '25 21:03 mrjones2014