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 { | 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