mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-03-19 21:28:28 +02:00
more refactoring
This commit is contained in:
parent
56197c81cf
commit
9167c9df65
@ -97,10 +97,10 @@ func (gui *Gui) renderAppStatus() {
|
|||||||
for range ticker.C {
|
for range ticker.C {
|
||||||
appStatus := gui.statusManager.getStatusString()
|
appStatus := gui.statusManager.getStatusString()
|
||||||
if appStatus == "" {
|
if appStatus == "" {
|
||||||
gui.renderString("appStatus", "")
|
gui.renderString(gui.Views.AppStatus, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
gui.renderString("appStatus", appStatus)
|
gui.renderString(gui.Views.AppStatus, appStatus)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ func (gui *Gui) handleCommitMessageFocused() error {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
gui.renderString("options", message)
|
gui.renderString(gui.Views.Options, message)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ func (gui *Gui) createPopupPanel(opts createPopupPanelOpts) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
gui.renderString("confirmation", opts.prompt)
|
gui.renderString(gui.Views.Confirmation, opts.prompt)
|
||||||
|
|
||||||
return gui.setKeyBindings(opts)
|
return gui.setKeyBindings(opts)
|
||||||
})
|
})
|
||||||
@ -243,7 +243,7 @@ func (gui *Gui) setKeyBindings(opts createPopupPanelOpts) error {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
gui.renderString("options", actions)
|
gui.renderString(gui.Views.Options, actions)
|
||||||
var onConfirm func() error
|
var onConfirm func() error
|
||||||
if opts.handleConfirmPrompt != nil {
|
if opts.handleConfirmPrompt != nil {
|
||||||
onConfirm = gui.wrappedPromptConfirmationFunction(opts.handlersManageFocus, opts.handleConfirmPrompt, func() string { return gui.Views.Confirmation.Buffer() })
|
onConfirm = gui.wrappedPromptConfirmationFunction(opts.handlersManageFocus, opts.handleConfirmPrompt, func() string { return gui.Views.Confirmation.Buffer() })
|
||||||
|
@ -13,7 +13,7 @@ type credentials chan string
|
|||||||
func (gui *Gui) promptUserForCredential(passOrUname string) string {
|
func (gui *Gui) promptUserForCredential(passOrUname string) string {
|
||||||
gui.credentials = make(chan string)
|
gui.credentials = make(chan string)
|
||||||
gui.g.Update(func(g *gocui.Gui) error {
|
gui.g.Update(func(g *gocui.Gui) error {
|
||||||
credentialsView, _ := g.View("credentials")
|
credentialsView := gui.Views.Credentials
|
||||||
switch passOrUname {
|
switch passOrUname {
|
||||||
case "username":
|
case "username":
|
||||||
credentialsView.Title = gui.Tr.CredentialsUsername
|
credentialsView.Title = gui.Tr.CredentialsUsername
|
||||||
@ -67,7 +67,7 @@ func (gui *Gui) handleCredentialsViewFocused() error {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
gui.renderString("options", message)
|
gui.renderString(gui.Views.Options, message)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@ func (gui *Gui) handleWIPCommitPress() error {
|
|||||||
return gui.createErrorPanel(gui.Tr.SkipHookPrefixNotConfigured)
|
return gui.createErrorPanel(gui.Tr.SkipHookPrefixNotConfigured)
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = gui.renderStringSync("commitMessage", skipHookPreifx)
|
_ = gui.renderStringSync(gui.Views.CommitMessage, skipHookPreifx)
|
||||||
if err := gui.Views.CommitMessage.SetCursor(len(skipHookPreifx), 0); err != nil {
|
if err := gui.Views.CommitMessage.SetCursor(len(skipHookPreifx), 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -393,7 +393,7 @@ func (gui *Gui) handleCommitPress() error {
|
|||||||
return gui.createErrorPanel(fmt.Sprintf("%s: %s", gui.Tr.LcCommitPrefixPatternError, err.Error()))
|
return gui.createErrorPanel(fmt.Sprintf("%s: %s", gui.Tr.LcCommitPrefixPatternError, err.Error()))
|
||||||
}
|
}
|
||||||
prefix := rgx.ReplaceAllString(gui.getCheckedOutBranch().Name, prefixReplace)
|
prefix := rgx.ReplaceAllString(gui.getCheckedOutBranch().Name, prefixReplace)
|
||||||
gui.renderString("commitMessage", prefix)
|
gui.renderString(gui.Views.CommitMessage, prefix)
|
||||||
if err := gui.Views.CommitMessage.SetCursor(len(prefix), 0); err != nil {
|
if err := gui.Views.CommitMessage.SetCursor(len(prefix), 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -48,8 +48,8 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
viewDimensions := gui.getWindowDimensions(informationStr, appStatus)
|
viewDimensions := gui.getWindowDimensions(informationStr, appStatus)
|
||||||
|
|
||||||
// reading more lines into main view buffers upon resize
|
// reading more lines into main view buffers upon resize
|
||||||
prevMainView, err := gui.g.View("main")
|
prevMainView := gui.Views.Main
|
||||||
if err == nil {
|
if prevMainView != nil {
|
||||||
_, prevMainHeight := prevMainView.Size()
|
_, prevMainHeight := prevMainView.Size()
|
||||||
newMainHeight := viewDimensions["main"].Y1 - viewDimensions["main"].Y0 - 1
|
newMainHeight := viewDimensions["main"].Y1 - viewDimensions["main"].Y0 - 1
|
||||||
heightDiff := newMainHeight - prevMainHeight
|
heightDiff := newMainHeight - prevMainHeight
|
||||||
@ -230,7 +230,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
gui.Views.Information.BgColor = gocui.ColorDefault
|
gui.Views.Information.BgColor = gocui.ColorDefault
|
||||||
gui.Views.Information.FgColor = gocui.ColorGreen
|
gui.Views.Information.FgColor = gocui.ColorGreen
|
||||||
gui.Views.Information.Frame = false
|
gui.Views.Information.Frame = false
|
||||||
gui.renderString("information", INFO_SECTION_PADDING+informationStr)
|
gui.renderString(gui.Views.Information, INFO_SECTION_PADDING+informationStr)
|
||||||
}
|
}
|
||||||
if gui.State.OldInformation != informationStr {
|
if gui.State.OldInformation != informationStr {
|
||||||
gui.setViewContent(gui.Views.Information, informationStr)
|
gui.setViewContent(gui.Views.Information, informationStr)
|
||||||
|
@ -110,29 +110,29 @@ func (t *runFunctionTask) GetKind() TaskKind {
|
|||||||
// return &runFunctionTask{f: f}
|
// return &runFunctionTask{f: f}
|
||||||
// }
|
// }
|
||||||
|
|
||||||
func (gui *Gui) runTaskForView(viewName string, task updateTask) error {
|
func (gui *Gui) runTaskForView(view *gocui.View, task updateTask) error {
|
||||||
gui.Log.Warn("running new task for view")
|
gui.Log.Warn("running new task for view")
|
||||||
|
|
||||||
switch task.GetKind() {
|
switch task.GetKind() {
|
||||||
case RENDER_STRING:
|
case RENDER_STRING:
|
||||||
specificTask := task.(*renderStringTask)
|
specificTask := task.(*renderStringTask)
|
||||||
return gui.newStringTask(viewName, specificTask.str)
|
return gui.newStringTask(view, specificTask.str)
|
||||||
|
|
||||||
case RENDER_STRING_WITHOUT_SCROLL:
|
case RENDER_STRING_WITHOUT_SCROLL:
|
||||||
specificTask := task.(*renderStringWithoutScrollTask)
|
specificTask := task.(*renderStringWithoutScrollTask)
|
||||||
return gui.newStringTaskWithoutScroll(viewName, specificTask.str)
|
return gui.newStringTaskWithoutScroll(view, specificTask.str)
|
||||||
|
|
||||||
case RUN_FUNCTION:
|
case RUN_FUNCTION:
|
||||||
specificTask := task.(*runFunctionTask)
|
specificTask := task.(*runFunctionTask)
|
||||||
return gui.newTask(viewName, specificTask.f)
|
return gui.newTask(view, specificTask.f)
|
||||||
|
|
||||||
case RUN_COMMAND:
|
case RUN_COMMAND:
|
||||||
specificTask := task.(*runCommandTask)
|
specificTask := task.(*runCommandTask)
|
||||||
return gui.newCmdTask(viewName, specificTask.cmd, specificTask.prefix)
|
return gui.newCmdTask(view, specificTask.cmd, specificTask.prefix)
|
||||||
|
|
||||||
case RUN_PTY:
|
case RUN_PTY:
|
||||||
specificTask := task.(*runPtyTask)
|
specificTask := task.(*runPtyTask)
|
||||||
return gui.newPtyTask(viewName, specificTask.cmd, specificTask.prefix)
|
return gui.newPtyTask(view, specificTask.cmd, specificTask.prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -143,7 +143,7 @@ func (gui *Gui) refreshMainView(opts *viewUpdateOpts, view *gocui.View) error {
|
|||||||
view.Wrap = !opts.noWrap
|
view.Wrap = !opts.noWrap
|
||||||
view.Highlight = opts.highlight
|
view.Highlight = opts.highlight
|
||||||
|
|
||||||
if err := gui.runTaskForView(view.Name(), opts.task); err != nil {
|
if err := gui.runTaskForView(view, opts.task); err != nil {
|
||||||
gui.Log.Error(err)
|
gui.Log.Error(err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"os/exec"
|
"os/exec"
|
||||||
|
|
||||||
"github.com/creack/pty"
|
"github.com/creack/pty"
|
||||||
|
"github.com/jesseduffield/gocui"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) onResize() error {
|
func (gui *Gui) onResize() error {
|
||||||
@ -29,22 +30,17 @@ func (gui *Gui) onResize() error {
|
|||||||
// which is just an io.Reader. the pty package lets us wrap a command in a
|
// which is just an io.Reader. the pty package lets us wrap a command in a
|
||||||
// pseudo-terminal meaning we'll get the behaviour we want from the underlying
|
// pseudo-terminal meaning we'll get the behaviour we want from the underlying
|
||||||
// command.
|
// command.
|
||||||
func (gui *Gui) newPtyTask(viewName string, cmd *exec.Cmd, prefix string) error {
|
func (gui *Gui) newPtyTask(view *gocui.View, cmd *exec.Cmd, prefix string) error {
|
||||||
width, _ := gui.Views.Main.Size()
|
width, _ := gui.Views.Main.Size()
|
||||||
pager := gui.GitCommand.GetPager(width)
|
pager := gui.GitCommand.GetPager(width)
|
||||||
|
|
||||||
if pager == "" {
|
if pager == "" {
|
||||||
// if we're not using a custom pager we don't need to use a pty
|
// if we're not using a custom pager we don't need to use a pty
|
||||||
return gui.newCmdTask(viewName, cmd, prefix)
|
return gui.newCmdTask(view, cmd, prefix)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.Env = append(cmd.Env, "GIT_PAGER="+pager)
|
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()
|
_, height := view.Size()
|
||||||
_, oy := view.Origin()
|
_, oy := view.Origin()
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ func (gui *Gui) handleOpenSearch(viewName string) error {
|
|||||||
gui.State.Searching.isSearching = true
|
gui.State.Searching.isSearching = true
|
||||||
gui.State.Searching.view = view
|
gui.State.Searching.view = view
|
||||||
|
|
||||||
gui.renderString("search", "")
|
gui.renderString(gui.Views.Search, "")
|
||||||
|
|
||||||
if err := gui.pushContext(gui.State.Contexts.Search); err != nil {
|
if err := gui.pushContext(gui.State.Contexts.Search); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -27,6 +27,7 @@ func (gui *Gui) handleOpenSearch(viewName string) error {
|
|||||||
|
|
||||||
func (gui *Gui) handleSearch() error {
|
func (gui *Gui) handleSearch() error {
|
||||||
gui.State.Searching.searchString = gui.Views.Search.Buffer()
|
gui.State.Searching.searchString = gui.Views.Search.Buffer()
|
||||||
|
gui.Log.Warn(gui.State.Searching.searchString)
|
||||||
if err := gui.returnFromContext(); err != nil {
|
if err := gui.returnFromContext(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -49,7 +50,7 @@ func (gui *Gui) onSelectItemWrapper(innerFunc func(int) error) func(int, int, in
|
|||||||
return func(y int, index int, total int) error {
|
return func(y int, index int, total int) error {
|
||||||
if total == 0 {
|
if total == 0 {
|
||||||
gui.renderString(
|
gui.renderString(
|
||||||
"search",
|
gui.Views.Search,
|
||||||
fmt.Sprintf(
|
fmt.Sprintf(
|
||||||
"no matches for '%s' %s",
|
"no matches for '%s' %s",
|
||||||
gui.State.Searching.searchString,
|
gui.State.Searching.searchString,
|
||||||
@ -62,7 +63,7 @@ func (gui *Gui) onSelectItemWrapper(innerFunc func(int) error) func(int, int, in
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
gui.renderString(
|
gui.renderString(
|
||||||
"search",
|
gui.Views.Search,
|
||||||
fmt.Sprintf(
|
fmt.Sprintf(
|
||||||
"matches for '%s' (%d of %d) %s",
|
"matches for '%s' (%d of %d) %s",
|
||||||
gui.State.Searching.searchString,
|
gui.State.Searching.searchString,
|
||||||
|
@ -8,17 +8,12 @@ import (
|
|||||||
"github.com/jesseduffield/lazygit/pkg/tasks"
|
"github.com/jesseduffield/lazygit/pkg/tasks"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) newCmdTask(viewName string, cmd *exec.Cmd, prefix string) error {
|
func (gui *Gui) newCmdTask(view *gocui.View, cmd *exec.Cmd, prefix string) error {
|
||||||
gui.Log.WithField(
|
gui.Log.WithField(
|
||||||
"command",
|
"command",
|
||||||
strings.Join(cmd.Args, " "),
|
strings.Join(cmd.Args, " "),
|
||||||
).Debug("RunCommand")
|
).Debug("RunCommand")
|
||||||
|
|
||||||
view, err := gui.g.View(viewName)
|
|
||||||
if err != nil {
|
|
||||||
return nil // swallowing for now
|
|
||||||
}
|
|
||||||
|
|
||||||
_, height := view.Size()
|
_, height := view.Size()
|
||||||
_, oy := view.Origin()
|
_, oy := view.Origin()
|
||||||
|
|
||||||
@ -41,12 +36,7 @@ func (gui *Gui) newCmdTask(viewName string, cmd *exec.Cmd, prefix string) error
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) newTask(viewName string, f func(chan struct{}) error) error {
|
func (gui *Gui) newTask(view *gocui.View, f func(chan struct{}) error) error {
|
||||||
view, err := gui.g.View(viewName)
|
|
||||||
if err != nil {
|
|
||||||
return nil // swallowing for now
|
|
||||||
}
|
|
||||||
|
|
||||||
manager := gui.getManager(view)
|
manager := gui.getManager(view)
|
||||||
|
|
||||||
if err := manager.NewTask(f); err != nil {
|
if err := manager.NewTask(f); err != nil {
|
||||||
@ -56,16 +46,11 @@ func (gui *Gui) newTask(viewName string, f func(chan struct{}) error) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) newStringTask(viewName string, str string) error {
|
func (gui *Gui) newStringTask(view *gocui.View, str string) error {
|
||||||
view, err := gui.g.View(viewName)
|
|
||||||
if err != nil {
|
|
||||||
return nil // swallowing for now
|
|
||||||
}
|
|
||||||
|
|
||||||
manager := gui.getManager(view)
|
manager := gui.getManager(view)
|
||||||
|
|
||||||
f := func(stop chan struct{}) error {
|
f := func(stop chan struct{}) error {
|
||||||
gui.renderString(viewName, str)
|
gui.renderString(view, str)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,12 +61,7 @@ func (gui *Gui) newStringTask(viewName string, str string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) newStringTaskWithoutScroll(viewName string, str string) error {
|
func (gui *Gui) newStringTaskWithoutScroll(view *gocui.View, str string) error {
|
||||||
view, err := gui.g.View(viewName)
|
|
||||||
if err != nil {
|
|
||||||
return nil // swallowing for now
|
|
||||||
}
|
|
||||||
|
|
||||||
manager := gui.getManager(view)
|
manager := gui.getManager(view)
|
||||||
|
|
||||||
f := func(stop chan struct{}) error {
|
f := func(stop chan struct{}) error {
|
||||||
|
@ -52,7 +52,7 @@ func (gui *Gui) startUpdating(newVersion string) {
|
|||||||
func (gui *Gui) onUpdateFinish(statusId int, err error) error {
|
func (gui *Gui) onUpdateFinish(statusId int, err error) error {
|
||||||
gui.State.Updating = false
|
gui.State.Updating = false
|
||||||
gui.statusManager.removeStatus(statusId)
|
gui.statusManager.removeStatus(statusId)
|
||||||
gui.renderString("appStatus", "")
|
gui.renderString(gui.Views.AppStatus, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return gui.createErrorPanel("Update failed: " + err.Error())
|
return gui.createErrorPanel("Update failed: " + err.Error())
|
||||||
}
|
}
|
||||||
|
@ -207,24 +207,20 @@ func (gui *Gui) setViewContent(v *gocui.View, s string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// renderString resets the origin of a view and sets its content
|
// renderString resets the origin of a view and sets its content
|
||||||
func (gui *Gui) renderString(viewName, s string) {
|
func (gui *Gui) renderString(view *gocui.View, s string) {
|
||||||
gui.g.Update(func(*gocui.Gui) error {
|
gui.g.Update(func(*gocui.Gui) error {
|
||||||
return gui.renderStringSync(viewName, s)
|
return gui.renderStringSync(view, s)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) renderStringSync(viewName, s string) error {
|
func (gui *Gui) renderStringSync(view *gocui.View, s string) error {
|
||||||
v, err := gui.g.View(viewName)
|
if err := view.SetOrigin(0, 0); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil // return gracefully if view has been deleted
|
|
||||||
}
|
|
||||||
if err := v.SetOrigin(0, 0); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := v.SetCursor(0, 0); err != nil {
|
if err := view.SetCursor(0, 0); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
gui.setViewContent(v, s)
|
gui.setViewContent(view, s)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +234,7 @@ func (gui *Gui) optionsMapToString(optionsMap map[string]string) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) renderOptionsMap(optionsMap map[string]string) {
|
func (gui *Gui) renderOptionsMap(optionsMap map[string]string) {
|
||||||
gui.renderString("options", gui.optionsMapToString(optionsMap))
|
gui.renderString(gui.Views.Options, gui.optionsMapToString(optionsMap))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) trimmedContent(v *gocui.View) string {
|
func (gui *Gui) trimmedContent(v *gocui.View) string {
|
||||||
|
15
vendor/github.com/jesseduffield/gocui/gui.go
generated
vendored
15
vendor/github.com/jesseduffield/gocui/gui.go
generated
vendored
@ -1002,12 +1002,7 @@ func (g *Gui) draw(v *View) error {
|
|||||||
func (g *Gui) onKey(ev *GocuiEvent) error {
|
func (g *Gui) onKey(ev *GocuiEvent) error {
|
||||||
switch ev.Type {
|
switch ev.Type {
|
||||||
case eventKey:
|
case eventKey:
|
||||||
if g.currentView != nil && g.currentView.Editable && g.currentView.Editor != nil {
|
|
||||||
matched := g.currentView.Editor.Edit(g.currentView, Key(ev.Key), ev.Ch, Modifier(ev.Mod))
|
|
||||||
if matched {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_, err := g.execKeybindings(g.currentView, ev)
|
_, err := g.execKeybindings(g.currentView, ev)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -1095,6 +1090,14 @@ func (g *Gui) execKeybindings(v *View, ev *GocuiEvent) (matched bool, err error)
|
|||||||
if matchingParentViewKb != nil {
|
if matchingParentViewKb != nil {
|
||||||
return g.execKeybinding(v.ParentView, matchingParentViewKb)
|
return g.execKeybinding(v.ParentView, matchingParentViewKb)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if g.currentView != nil && g.currentView.Editable && g.currentView.Editor != nil {
|
||||||
|
matched := g.currentView.Editor.Edit(g.currentView, Key(ev.Key), ev.Ch, Modifier(ev.Mod))
|
||||||
|
if matched {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if globalKb != nil {
|
if globalKb != nil {
|
||||||
return g.execKeybinding(v, globalKb)
|
return g.execKeybinding(v, globalKb)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user