summaryrefslogtreecommitdiff
path: root/internal/client/ui/viminput/viminput.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-12-09 19:17:18 +0200
committerKyren223 <Kyren223@proton.me>2024-12-09 19:17:18 +0200
commitcd69bf019db4a63fa98aee4e483ec28b8bc64ff5 (patch)
tree421561d6e10cb9d721f0268792c610a97ddb955b /internal/client/ui/viminput/viminput.go
parent37bdf70ea7a465f36486e4d2a9a6fdaa566fb99e (diff)
Pasting forward fully complete in viminput
Diffstat (limited to 'internal/client/ui/viminput/viminput.go')
-rw-r--r--internal/client/ui/viminput/viminput.go20
1 files changed, 18 insertions, 2 deletions
diff --git a/internal/client/ui/viminput/viminput.go b/internal/client/ui/viminput/viminput.go
index bad4232..fa873fb 100644
--- a/internal/client/ui/viminput/viminput.go
+++ b/internal/client/ui/viminput/viminput.go
@@ -53,7 +53,7 @@ func New(width, height int) Model {
PromptStyle: lipgloss.NewStyle(),
Placeholder: "",
LineDecoration: EmptyLineDecoration,
- register: "",
+ register: "\nHMM\nYO",
lines: [][]rune{[]rune("")},
cursorLine: 0,
cursorColumn: 0,
@@ -286,12 +286,28 @@ func (m *Model) handleNormalModeKeys(key tea.KeyMsg) {
for _, line := range lines {
runeLines = append(runeLines, []rune(line))
}
+
m.lines = slices.Insert(m.lines, m.cursorLine+1, runeLines...)
+
m.SetCursorLine(m.cursorLine + 1)
_, col := m.Motion("_")
m.SetCursorColumn(col)
} else {
- // TODO:
+ var runeLines [][]rune
+ for _, line := range lines {
+ runeLines = append(runeLines, []rune(line))
+ }
+
+ splittingCol := min(m.cursorColumn+1, len(line))
+ line := m.lines[m.cursorLine]
+ after := line[splittingCol:]
+ lastLine := len(runeLines) - 1
+ runeLines[lastLine] = append(runeLines[lastLine], after...)
+
+ m.lines[m.cursorLine] = append(line[:splittingCol], runeLines[0]...)
+ m.lines = slices.Insert(m.lines, m.cursorLine+1, runeLines[1:]...)
+
+ m.SetCursorColumn(min(splittingCol, len(m.lines[m.cursorLine])-1))
}
case "P":
paste := m.Paste()