summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDawid Dziurla <dawidd0811@gmail.com>2018-09-02 17:08:59 +0200
committerDawid Dziurla <dawidd0811@gmail.com>2018-09-05 11:26:54 +0200
commit98763e98cb4c0af033b5276423e451f1f8cd11ee (patch)
treee738b033e4c8e70b7614c893c6472eaf308e7d36
parentf777c60ea4f014e93d31914d4e0a9b5ba1165382 (diff)
initial commit message counter
-rw-r--r--pkg/gui/commit_message_panel.go6
-rw-r--r--pkg/gui/files_panel.go57
-rw-r--r--pkg/gui/gui.go10
-rw-r--r--pkg/gui/keybindings.go1
4 files changed, 68 insertions, 6 deletions
diff --git a/pkg/gui/commit_message_panel.go b/pkg/gui/commit_message_panel.go
index 36718680f..88a011c76 100644
--- a/pkg/gui/commit_message_panel.go
+++ b/pkg/gui/commit_message_panel.go
@@ -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 {
g.SetViewOnBottom("commitMessage")
+ g.SetViewOnBottom("commitMessageCount")
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 {
message := gui.Tr.TemplateLocalize(
"CloseConfirm",
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go
index a4c187c9c..43f7e5831 100644
--- a/pkg/gui/files_panel.go
+++ b/pkg/gui/files_panel.go
@@ -12,6 +12,7 @@ import (
"github.com/fatih/color"
"github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/commands"
+ "strconv"
)
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)
}
+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 {
if len(gui.stagedFiles()) == 0 && !gui.State.HasMergeConflicts {
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)
g.Update(func(g *gocui.Gui) error {
g.SetViewOnTop("commitMessage")
+ g.SetViewOnTop("commitMessageCount")
gui.switchFocus(g, filesView, commitMessageView)
+ gui.renderCommitCount(commitMessageView)
return nil
})
return nil
diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go
index bb2ed752b..6c35f9dca 100644
--- a/pkg/gui/gui.go
+++ b/pkg/gui/gui.go
@@ -262,6 +262,16 @@ func (gui *Gui) layout(g *gocui.Gui) error {
commitMessageView.Title = gui.Tr.SLocalize("CommitMessage")
commitMessageView.FgColor = gocui.ColorWhite
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
}
}
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index c6decc24f..494381749 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -70,7 +70,6 @@ func (gui *Gui) keybindings(g *gocui.Gui) error {
{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.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