feat(tui): yank the patch/diff to clipboard (#725)

Benjamin Chausse created

Change summary

pkg/ui/pages/repo/log.go | 10 ++++++++++
1 file changed, 10 insertions(+)

Detailed changes

pkg/ui/pages/repo/log.go 🔗

@@ -117,9 +117,12 @@ func (l *Log) ShortHelp() []key.Binding {
 			copyKey,
 		}
 	case logViewDiff:
+		copyKey := l.common.KeyMap.Copy
+		copyKey.SetHelp("c", "copy diff")
 		return []key.Binding{
 			l.common.KeyMap.UpDown,
 			l.common.KeyMap.BackItem,
+			copyKey,
 			l.common.KeyMap.GotoTop,
 			l.common.KeyMap.GotoBottom,
 		}
@@ -154,9 +157,12 @@ func (l *Log) FullHelp() [][]key.Binding {
 			},
 		}...)
 	case logViewDiff:
+		copyKey := l.common.KeyMap.Copy
+		copyKey.SetHelp("c", "copy diff")
 		k := l.vp.KeyMap
 		b = append(b, []key.Binding{
 			l.common.KeyMap.BackItem,
+			copyKey,
 		})
 		b = append(b, [][]key.Binding{
 			{
@@ -252,6 +258,10 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
 				switch {
 				case key.Matches(kmsg, l.common.KeyMap.BackItem):
 					l.goBack()
+				case key.Matches(kmsg, l.common.KeyMap.Copy):
+					if l.currentDiff != nil {
+						cmds = append(cmds, copyCmd(l.currentDiff.Patch(), "Commit diff copied to clipboard"))
+					}
 				}
 			}
 		}