mirror of
				https://github.com/jesseduffield/lazygit.git
				synced 2025-10-30 23:57:43 +02: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 { | ||||
| 	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", | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user