52f7a9ee5aa9d8921b7948ae1f1e7664781419a4

Author
Benjamin Chausse <benjamin@chausse.xyz>
Committer
GitHub <noreply@github.com>
Date

Message

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

Diff

 1diff --git a/pkg/ui/pages/repo/log.go b/pkg/ui/pages/repo/log.go
 2index d58118246f2af89de24ecb4e13be368a1b1828c0..e38399f492842c0e2624b6ff0a5f061022d448e5 100644
 3--- a/pkg/ui/pages/repo/log.go
 4+++ b/pkg/ui/pages/repo/log.go
 5@@ -117,9 +117,12 @@ func (l *Log) ShortHelp() []key.Binding {
 6 			copyKey,
 7 		}
 8 	case logViewDiff:
 9+		copyKey := l.common.KeyMap.Copy
10+		copyKey.SetHelp("c", "copy diff")
11 		return []key.Binding{
12 			l.common.KeyMap.UpDown,
13 			l.common.KeyMap.BackItem,
14+			copyKey,
15 			l.common.KeyMap.GotoTop,
16 			l.common.KeyMap.GotoBottom,
17 		}
18@@ -154,9 +157,12 @@ func (l *Log) FullHelp() [][]key.Binding {
19 			},
20 		}...)
21 	case logViewDiff:
22+		copyKey := l.common.KeyMap.Copy
23+		copyKey.SetHelp("c", "copy diff")
24 		k := l.vp.KeyMap
25 		b = append(b, []key.Binding{
26 			l.common.KeyMap.BackItem,
27+			copyKey,
28 		})
29 		b = append(b, [][]key.Binding{
30 			{
31@@ -252,6 +258,10 @@ func (l *Log) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
32 				switch {
33 				case key.Matches(kmsg, l.common.KeyMap.BackItem):
34 					l.goBack()
35+				case key.Matches(kmsg, l.common.KeyMap.Copy):
36+					if l.currentDiff != nil {
37+						cmds = append(cmds, copyCmd(l.currentDiff.Patch(), "Commit diff copied to clipboard"))
38+					}
39 				}
40 			}
41 		}