1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

supporing custom pagers step 1

This commit is contained in:
Jesse Duffield
2020-03-01 12:30:48 +11:00
parent 113252b0ae
commit 355f1615ab
13 changed files with 233 additions and 62 deletions

View File

@ -5,6 +5,7 @@ import (
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/tasks"
"github.com/jesseduffield/pty"
)
func (gui *Gui) newCmdTask(viewName string, cmd *exec.Cmd) error {
@ -25,6 +26,49 @@ func (gui *Gui) newCmdTask(viewName string, cmd *exec.Cmd) error {
return nil
}
func (gui *Gui) newPtyTask(viewName string, cmd *exec.Cmd) error {
width, _ := gui.getMainView().Size()
pager, err := gui.GitCommand.GetPager(width)
if err != nil {
return err
}
if pager == "" {
// if we're not using a custom pager we don't need to use a pty
return gui.newCmdTask(viewName, cmd)
}
cmd.Env = append(cmd.Env, "GIT_PAGER="+pager)
view, err := gui.g.View(viewName)
if err != nil {
return nil // swallowing for now
}
_, height := view.Size()
_, oy := view.Origin()
manager := gui.getManager(view)
ptmx, err := pty.Start(cmd)
if err != nil {
return err
}
gui.State.Ptmx = ptmx
onClose := func() { gui.State.Ptmx = nil }
if err := gui.onResize(); err != nil {
return err
}
if err := manager.NewTask(manager.NewPtyTask(ptmx, cmd, height+oy+10, onClose)); err != nil {
return err
}
return nil
}
func (gui *Gui) newTask(viewName string, f func(chan struct{}) error) error {
view, err := gui.g.View(viewName)
if err != nil {
@ -69,7 +113,10 @@ func (gui *Gui) getManager(view *gocui.View) *tasks.ViewBufferManager {
view.Clear()
},
func() {
gui.g.Update(func(*gocui.Gui) error { return nil })
gui.g.Update(func(*gocui.Gui) error {
gui.Log.Warn("updating view")
return nil
})
})
gui.viewBufferManagerMap[view.Name()] = manager
}