vimpostor / vim-tpipeline

Embed your vim statusline in tmux
GNU General Public License v3.0
357 stars 10 forks source link

clearstl does not work with lualine #51

Closed Nimmidev closed 1 year ago

Nimmidev commented 1 year ago

Since about a year neovim has added another way to display the statusline with laststatus=3. With this setting only one global statusline is used for all windows. If the window focus is changed, the statusline is updated with the respective window information.

This feature is a huge deal for me because it saves a lot of valuable screen space especially on laptops. While merging the vim statusline with the tmux one is an anwesome feature and also saves screen space, it is currently mutually exclusive with laststatus=3. So i was wondering: Do you think it is possible to to support both?

vimpostor commented 1 year ago

Do you think it is possible to to support both?

What does that even mean? You can either show the statusline in the tmux statusline or show the statusline in neovim, if you combine them you would have two statuslines again. So I don't really understand what you mean with supporting laststatus=3. What would that look like?

Nimmidev commented 1 year ago

At the moment with the current version of vim-tpipeline laststatus=0 is utilized to hide the statusline. But this only works for the bottom row of windows. Windows above that still have a statusline as you can see here:

If laststatus=3 is set only one statusline is displayed for all windows as you can see here

I am not very familiar with the vim ui internals, so i was wondering if there is a ui hack or something so that you have the advantage of laststatus=3 while still not having the global statusline at the bottom visible (as with laststatus=0). Or to put it simple, not having statuslines anywhere so that the tmux one is the only one. No matter how many windows you have.

In case this is not possible i would open an issue in the neovim repo and ask them what they think about adding an option like that.

vimpostor commented 1 year ago

Thanks for the detailed explanation, I understand now. In that case this is a duplicate of #19 and can be fixed with let g:tpipeline_clearstl = 1 and set fcs=stlnc:─,stl:─,vert:│ as detailed in https://github.com/vimpostor/vim-tpipeline/issues/19#issuecomment-1000844167

In case this is not possible i would open an issue in the neovim repo and ask them what they think about adding an option like that.

Still it might be good to see if something could be implemented in neovim that really hides the duplicate split window statusline like it is already the case for laststatus=3, as that would be more clean than the workaround above.

Nimmidev commented 1 year ago

I have already tried #19 but the fact that part of the statusline is still visible bothered me. Thats the reason i opened this issue ^^

Ye it seems like going to the source (neovim) is the best option then. Ill open a issue there and explain the use case with this plugins as an example. Ill let you know about any progress on that front. You can close that issue (or keep it open) as you like.

vimpostor commented 1 year ago

Well there isn't really any visual difference between the workaround in #19 and what you are describing. Using above fcs will result in this, which looks exactly like your laststatus=3 screenshot.

Screenshot_20230305_205655

Nimmidev commented 1 year ago

Than that seem like another case of lualine messing stuff up:

vimpostor commented 1 year ago

I have added another workaround for lualine...

Edit: Looks like this opened up some other regressions with lualine, I will have to find another workaround. (Or something could be added upstream in neovim to allow drawing proper split lines without the statusline)

Nimmidev commented 1 year ago

Maybe I should add a g:my_next_statusline_wont_be_lualine option instead?

Good one ^^

Ill open that issue in the neovim repo as soon as i am back at my pc.

vimpostor commented 1 year ago

It should work without problems now, but as always with lualine, things are getting cursed.

Note that lualine seemed to be setting the local statusline option for almost all windows during every event: https://github.com/nvim-lualine/lualine.nvim/blob/2ac8d77575926d5c22f1d13f3e48000d579277e3/lua/lualine.lua#L421-L430 And not only that, it's also unnecessarily called with a timer at least once every second in the best case scenario. So some extra workarounds were necessary from this plugin's side...

I highly recommend using a statusline that is not lualine (but this plugin now works again with lualine).

Nimmidev commented 1 year ago

Oh god. I am sorry you have to jump through all of those hoops to get lualine supported. I will definitively switch as soon as i have time to checkout a couple of the available options. Most of the lualine features are overkill for me anyway.

Either way, thanks again for your swift response and fixes.