(local M {})
(fn M.open-wrapwin []
(let [curwin (vim.api.nvim_tabpage_get_win 0)
newwin (vim.api.nvim_open_win 0 false { :split :left })
winheight (vim.api.nvim_win_get_height 0)
winbot (vim.fn.line :w$)
targetline (+ winbot (math.floor (/ winheight 2) -1))]
; scroll new window page forward
(vim.api.nvim_win_set_cursor 0 [targetline 1])
(vim.cmd.normal :zz)
; enable scrollbind for both
(tset vim :o :scrollbind true)
(vim.api.nvim_tabpage_set_win 0 newwin)
(tset vim :o :scrollbind true)
; delete only new window
(vim.keymap.set :n :<c-c>
#((vim.api.nvim_win_close newwin false)
(vim.keymap.set :n :Q :ZZ))
{ :buffer true })
; delete both of windows
(vim.keymap.set :n :Q
#((vim.api.nvim_win_close newwin false)
(vim.api.nvim_tabpage_set_win 0 curwin)
(vim.cmd.quit))
{ :buffer true })
(vim.keymap.set :n :<c-f> :2<c-f> { :buffer true })
(vim.keymap.set :n :<c-b> :2<c-b> { :buffer true })
(vim.keymap.set :n :<c-d> :<c-f> { :buffer true })
(vim.keymap.set :n :<c-u> :<c-b> { :buffer true })))
M