mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-27 12:32:37 +02:00
show item counts in frames
This commit is contained in:
parent
0034cfef5c
commit
52b5a6410c
2
go.mod
2
go.mod
@ -11,7 +11,7 @@ require (
|
|||||||
github.com/golang/protobuf v1.3.2 // indirect
|
github.com/golang/protobuf v1.3.2 // indirect
|
||||||
github.com/google/go-cmp v0.3.1 // indirect
|
github.com/google/go-cmp v0.3.1 // indirect
|
||||||
github.com/integrii/flaggy v1.4.0
|
github.com/integrii/flaggy v1.4.0
|
||||||
github.com/jesseduffield/gocui v0.3.1-0.20200223105115-3e1f0f7c3efe
|
github.com/jesseduffield/gocui v0.3.1-0.20200224201655-5024a02682ed
|
||||||
github.com/jesseduffield/pty v1.2.1
|
github.com/jesseduffield/pty v1.2.1
|
||||||
github.com/jesseduffield/rollrus v0.0.0-20190701125922-dd028cb0bfd7 // indirect
|
github.com/jesseduffield/rollrus v0.0.0-20190701125922-dd028cb0bfd7 // indirect
|
||||||
github.com/jesseduffield/termbox-go v0.0.0-20200130214842-1d31d1faa3c9 // indirect
|
github.com/jesseduffield/termbox-go v0.0.0-20200130214842-1d31d1faa3c9 // indirect
|
||||||
|
2
go.sum
2
go.sum
@ -89,6 +89,8 @@ github.com/jesseduffield/gocui v0.3.1-0.20200201013258-57fdcf23edc5 h1:tE0w3tuL/
|
|||||||
github.com/jesseduffield/gocui v0.3.1-0.20200201013258-57fdcf23edc5/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
|
github.com/jesseduffield/gocui v0.3.1-0.20200201013258-57fdcf23edc5/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
|
||||||
github.com/jesseduffield/gocui v0.3.1-0.20200223105115-3e1f0f7c3efe h1:UQyebauOcBzbGq32kTXwEyuJaqp3BkI8JoCrGs2jijU=
|
github.com/jesseduffield/gocui v0.3.1-0.20200223105115-3e1f0f7c3efe h1:UQyebauOcBzbGq32kTXwEyuJaqp3BkI8JoCrGs2jijU=
|
||||||
github.com/jesseduffield/gocui v0.3.1-0.20200223105115-3e1f0f7c3efe/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
|
github.com/jesseduffield/gocui v0.3.1-0.20200223105115-3e1f0f7c3efe/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
|
||||||
|
github.com/jesseduffield/gocui v0.3.1-0.20200224201655-5024a02682ed h1:glGs+mzPZOl1iHiUsBW3918WeFwqsbQQ/jtLkkQXDi4=
|
||||||
|
github.com/jesseduffield/gocui v0.3.1-0.20200224201655-5024a02682ed/go.mod h1:2RtZznzYKt8RLRwvFiSkXjU0Ei8WwHdubgnlaYH47dw=
|
||||||
github.com/jesseduffield/pty v1.2.1 h1:7xYBiwNH0PpWqC8JmvrPq1a/ksNqyCavzWu9pbBGYWI=
|
github.com/jesseduffield/pty v1.2.1 h1:7xYBiwNH0PpWqC8JmvrPq1a/ksNqyCavzWu9pbBGYWI=
|
||||||
github.com/jesseduffield/pty v1.2.1/go.mod h1:7jlS40+UhOqkZJDIG1B/H21xnuET/+fvbbnHCa8wSIo=
|
github.com/jesseduffield/pty v1.2.1/go.mod h1:7jlS40+UhOqkZJDIG1B/H21xnuET/+fvbbnHCa8wSIo=
|
||||||
github.com/jesseduffield/roll v0.0.0-20190629104057-695be2e62b00 h1:+JaOkfBNYQYlGD7dgru8mCwYNEc5tRRI8mThlVANhSM=
|
github.com/jesseduffield/roll v0.0.0-20190629104057-695be2e62b00 h1:+JaOkfBNYQYlGD7dgru8mCwYNEc5tRRI8mThlVANhSM=
|
||||||
|
@ -555,6 +555,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
filesView.Highlight = true
|
filesView.Highlight = true
|
||||||
filesView.Title = gui.Tr.SLocalize("FilesTitle")
|
filesView.Title = gui.Tr.SLocalize("FilesTitle")
|
||||||
filesView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onFilesPanelSearchSelect))
|
filesView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onFilesPanelSearchSelect))
|
||||||
|
filesView.ContainsList = true
|
||||||
}
|
}
|
||||||
|
|
||||||
branchesView, err := g.SetViewBeneath("branches", "files", vHeights["branches"])
|
branchesView, err := g.SetViewBeneath("branches", "files", vHeights["branches"])
|
||||||
@ -566,6 +567,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
branchesView.Tabs = []string{"Local Branches", "Remotes", "Tags"}
|
branchesView.Tabs = []string{"Local Branches", "Remotes", "Tags"}
|
||||||
branchesView.FgColor = textColor
|
branchesView.FgColor = textColor
|
||||||
branchesView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onBranchesPanelSearchSelect))
|
branchesView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onBranchesPanelSearchSelect))
|
||||||
|
branchesView.ContainsList = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if v, err := g.SetViewBeneath("commitFiles", "branches", vHeights["commits"]); err != nil {
|
if v, err := g.SetViewBeneath("commitFiles", "branches", vHeights["commits"]); err != nil {
|
||||||
@ -586,6 +588,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
commitsView.Tabs = []string{"Commits", "Reflog"}
|
commitsView.Tabs = []string{"Commits", "Reflog"}
|
||||||
commitsView.FgColor = textColor
|
commitsView.FgColor = textColor
|
||||||
commitsView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onCommitsPanelSearchSelect))
|
commitsView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onCommitsPanelSearchSelect))
|
||||||
|
commitsView.ContainsList = true
|
||||||
}
|
}
|
||||||
|
|
||||||
stashView, err := g.SetViewBeneath("stash", "commits", vHeights["stash"])
|
stashView, err := g.SetViewBeneath("stash", "commits", vHeights["stash"])
|
||||||
@ -596,6 +599,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
stashView.Title = gui.Tr.SLocalize("StashTitle")
|
stashView.Title = gui.Tr.SLocalize("StashTitle")
|
||||||
stashView.FgColor = textColor
|
stashView.FgColor = textColor
|
||||||
stashView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onStashPanelSearchSelect))
|
stashView.SetOnSelectItem(gui.onSelectItemWrapper(gui.onStashPanelSearchSelect))
|
||||||
|
stashView.ContainsList = true
|
||||||
}
|
}
|
||||||
|
|
||||||
if v, err := g.SetView("options", appStatusOptionsBoundary-1, height-2, optionsVersionBoundary-1, height, 0); err != nil {
|
if v, err := g.SetView("options", appStatusOptionsBoundary-1, height-2, optionsVersionBoundary-1, height, 0); err != nil {
|
||||||
|
@ -76,6 +76,7 @@ func (gui *Gui) createMenu(title string, items []*menuItem, createMenuOptions cr
|
|||||||
menuView, _ := gui.g.SetView("menu", x0, y0, x1, y1, 0)
|
menuView, _ := gui.g.SetView("menu", x0, y0, x1, y1, 0)
|
||||||
menuView.Title = title
|
menuView.Title = title
|
||||||
menuView.FgColor = theme.GocuiDefaultTextColor
|
menuView.FgColor = theme.GocuiDefaultTextColor
|
||||||
|
menuView.ContainsList = true
|
||||||
menuView.Clear()
|
menuView.Clear()
|
||||||
fmt.Fprint(menuView, list)
|
fmt.Fprint(menuView, list)
|
||||||
gui.State.Panels.Menu.SelectedLine = 0
|
gui.State.Panels.Menu.SelectedLine = 0
|
||||||
|
34
vendor/github.com/jesseduffield/gocui/gui.go
generated
vendored
34
vendor/github.com/jesseduffield/gocui/gui.go
generated
vendored
@ -6,6 +6,7 @@ package gocui
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
standardErrors "errors"
|
standardErrors "errors"
|
||||||
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@ -542,6 +543,11 @@ func (g *Gui) flush() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if v.ContainsList {
|
||||||
|
if err := g.drawListFooter(v, fgColor, bgColor); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err := g.draw(v); err != nil {
|
if err := g.draw(v); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -729,6 +735,34 @@ func (g *Gui) drawSubtitle(v *View, fgColor, bgColor Attribute) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// drawListFooter draws the footer of a list view, showing something like '1 of 10'
|
||||||
|
func (g *Gui) drawListFooter(v *View, fgColor, bgColor Attribute) error {
|
||||||
|
if len(v.lines) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
message := fmt.Sprintf("%d of %d", v.cy+v.oy+1, len(v.lines))
|
||||||
|
|
||||||
|
if v.y1 < 0 || v.y1 >= g.maxY {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
start := v.x1 - 1 - len(message)
|
||||||
|
if start < v.x0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
for i, ch := range message {
|
||||||
|
x := start + i
|
||||||
|
if x >= v.x1 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if err := g.SetRune(x, v.y1, ch, fgColor, bgColor); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// draw manages the cursor and calls the draw function of a view.
|
// draw manages the cursor and calls the draw function of a view.
|
||||||
func (g *Gui) draw(v *View) error {
|
func (g *Gui) draw(v *View) error {
|
||||||
if g.Cursor {
|
if g.Cursor {
|
||||||
|
3
vendor/github.com/jesseduffield/gocui/view.go
generated
vendored
3
vendor/github.com/jesseduffield/gocui/view.go
generated
vendored
@ -107,6 +107,9 @@ type View struct {
|
|||||||
Context string // this is for assigning keybindings to a view only in certain contexts
|
Context string // this is for assigning keybindings to a view only in certain contexts
|
||||||
|
|
||||||
searcher *searcher
|
searcher *searcher
|
||||||
|
|
||||||
|
// when ContainsList is true, we show the current index and total count in the view
|
||||||
|
ContainsList bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type searcher struct {
|
type searcher struct {
|
||||||
|
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@ -32,7 +32,7 @@ github.com/hashicorp/hcl/json/token
|
|||||||
github.com/integrii/flaggy
|
github.com/integrii/flaggy
|
||||||
# github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
|
# github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99
|
||||||
github.com/jbenet/go-context/io
|
github.com/jbenet/go-context/io
|
||||||
# github.com/jesseduffield/gocui v0.3.1-0.20200223105115-3e1f0f7c3efe
|
# github.com/jesseduffield/gocui v0.3.1-0.20200224201655-5024a02682ed
|
||||||
github.com/jesseduffield/gocui
|
github.com/jesseduffield/gocui
|
||||||
# github.com/jesseduffield/pty v1.2.1
|
# github.com/jesseduffield/pty v1.2.1
|
||||||
github.com/jesseduffield/pty
|
github.com/jesseduffield/pty
|
||||||
|
Loading…
x
Reference in New Issue
Block a user