mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-31 14:24:25 +03:00
initial commit message counter
This commit is contained in:
@ -30,14 +30,10 @@ func (gui *Gui) handleCommitConfirm(g *gocui.Gui, v *gocui.View) error {
|
|||||||
|
|
||||||
func (gui *Gui) handleCommitClose(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCommitClose(g *gocui.Gui, v *gocui.View) error {
|
||||||
g.SetViewOnBottom("commitMessage")
|
g.SetViewOnBottom("commitMessage")
|
||||||
|
g.SetViewOnBottom("commitMessageCount")
|
||||||
return gui.switchFocus(g, v, gui.getFilesView(g))
|
return gui.switchFocus(g, v, gui.getFilesView(g))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleNewlineCommitMessage(g *gocui.Gui, v *gocui.View) error {
|
|
||||||
v.EditNewLine()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gui *Gui) handleCommitFocused(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCommitFocused(g *gocui.Gui, v *gocui.View) error {
|
||||||
message := gui.Tr.TemplateLocalize(
|
message := gui.Tr.TemplateLocalize(
|
||||||
"CloseConfirm",
|
"CloseConfirm",
|
||||||
|
@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/jesseduffield/lazygit/pkg/commands"
|
"github.com/jesseduffield/lazygit/pkg/commands"
|
||||||
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) stagedFiles() []commands.File {
|
func (gui *Gui) stagedFiles() []commands.File {
|
||||||
@ -218,6 +219,60 @@ func (gui *Gui) handleFileSelect(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return gui.renderString(g, "main", content)
|
return gui.renderString(g, "main", content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gui *Gui) simpleEditor(v *gocui.View, key gocui.Key, ch rune, mod gocui.Modifier) {
|
||||||
|
switch {
|
||||||
|
case key == gocui.KeyBackspace || key == gocui.KeyBackspace2:
|
||||||
|
v.EditDelete(true)
|
||||||
|
case key == gocui.KeyDelete:
|
||||||
|
v.EditDelete(false)
|
||||||
|
case key == gocui.KeyArrowDown:
|
||||||
|
v.MoveCursor(0, 1, false)
|
||||||
|
case key == gocui.KeyArrowUp:
|
||||||
|
v.MoveCursor(0, -1, false)
|
||||||
|
case key == gocui.KeyArrowLeft:
|
||||||
|
v.MoveCursor(-1, 0, false)
|
||||||
|
case key == gocui.KeyArrowRight:
|
||||||
|
v.MoveCursor(1, 0, false)
|
||||||
|
case key == gocui.KeyTab:
|
||||||
|
v.EditNewLine()
|
||||||
|
case key == gocui.KeySpace:
|
||||||
|
v.EditWrite(' ')
|
||||||
|
case key == gocui.KeyInsert:
|
||||||
|
v.Overwrite = !v.Overwrite
|
||||||
|
default:
|
||||||
|
v.EditWrite(ch)
|
||||||
|
}
|
||||||
|
|
||||||
|
gui.renderCommitCount(v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gui *Gui) getCommitCount(view *gocui.View) int {
|
||||||
|
return strings.Count(view.Buffer(), "") - 1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (gui *Gui) renderCommitCount(view *gocui.View) error {
|
||||||
|
num := 0
|
||||||
|
offset := 5
|
||||||
|
count := gui.getCommitCount(view)
|
||||||
|
_, y0, x1, _ := gui.getConfirmationPanelDimensions(gui.g, view.Buffer())
|
||||||
|
|
||||||
|
if count > 99 {
|
||||||
|
num = 3
|
||||||
|
} else if count > 9 {
|
||||||
|
num = 2
|
||||||
|
} else {
|
||||||
|
num = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := gui.g.SetView("commitMessageCount", x1-num-offset, y0-1, x1-offset+1, y0+1, 0); err != nil {
|
||||||
|
if err != gocui.ErrUnknownView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return gui.renderString(gui.g, "commitMessageCount", strconv.Itoa(count))
|
||||||
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleCommitPress(g *gocui.Gui, filesView *gocui.View) error {
|
func (gui *Gui) handleCommitPress(g *gocui.Gui, filesView *gocui.View) error {
|
||||||
if len(gui.stagedFiles()) == 0 && !gui.State.HasMergeConflicts {
|
if len(gui.stagedFiles()) == 0 && !gui.State.HasMergeConflicts {
|
||||||
return gui.createErrorPanel(g, gui.Tr.SLocalize("NoStagedFilesToCommit"))
|
return gui.createErrorPanel(g, gui.Tr.SLocalize("NoStagedFilesToCommit"))
|
||||||
@ -225,7 +280,9 @@ func (gui *Gui) handleCommitPress(g *gocui.Gui, filesView *gocui.View) error {
|
|||||||
commitMessageView := gui.getCommitMessageView(g)
|
commitMessageView := gui.getCommitMessageView(g)
|
||||||
g.Update(func(g *gocui.Gui) error {
|
g.Update(func(g *gocui.Gui) error {
|
||||||
g.SetViewOnTop("commitMessage")
|
g.SetViewOnTop("commitMessage")
|
||||||
|
g.SetViewOnTop("commitMessageCount")
|
||||||
gui.switchFocus(g, filesView, commitMessageView)
|
gui.switchFocus(g, filesView, commitMessageView)
|
||||||
|
gui.renderCommitCount(commitMessageView)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
|
@ -262,6 +262,16 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
|||||||
commitMessageView.Title = gui.Tr.SLocalize("CommitMessage")
|
commitMessageView.Title = gui.Tr.SLocalize("CommitMessage")
|
||||||
commitMessageView.FgColor = gocui.ColorWhite
|
commitMessageView.FgColor = gocui.ColorWhite
|
||||||
commitMessageView.Editable = true
|
commitMessageView.Editable = true
|
||||||
|
commitMessageView.Editor = gocui.EditorFunc(gui.simpleEditor)
|
||||||
|
}
|
||||||
|
if commitMessageCountView, err := g.SetView("commitMessageCount", 0, 0, width/2, height/2, 0); err != nil {
|
||||||
|
if err != gocui.ErrUnknownView {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
g.SetViewOnBottom("commitMessageCount")
|
||||||
|
commitMessageCountView.Frame = false
|
||||||
|
commitMessageCountView.BgColor = gocui.ColorDefault
|
||||||
|
commitMessageCountView.FgColor = gocui.ColorWhite
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +70,6 @@ func (gui *Gui) keybindings(g *gocui.Gui) error {
|
|||||||
{ViewName: "stash", Key: 'd', Modifier: gocui.ModNone, Handler: gui.handleStashDrop},
|
{ViewName: "stash", Key: 'd', Modifier: gocui.ModNone, Handler: gui.handleStashDrop},
|
||||||
{ViewName: "commitMessage", Key: gocui.KeyEnter, Modifier: gocui.ModNone, Handler: gui.handleCommitConfirm},
|
{ViewName: "commitMessage", Key: gocui.KeyEnter, Modifier: gocui.ModNone, Handler: gui.handleCommitConfirm},
|
||||||
{ViewName: "commitMessage", Key: gocui.KeyEsc, Modifier: gocui.ModNone, Handler: gui.handleCommitClose},
|
{ViewName: "commitMessage", Key: gocui.KeyEsc, Modifier: gocui.ModNone, Handler: gui.handleCommitClose},
|
||||||
{ViewName: "commitMessage", Key: gocui.KeyTab, Modifier: gocui.ModNone, Handler: gui.handleNewlineCommitMessage},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Would make these keybindings global but that interferes with editing
|
// Would make these keybindings global but that interferes with editing
|
||||||
|
Reference in New Issue
Block a user