diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-12-09 19:17:18 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-12-09 19:17:18 +0200 |
| commit | cd69bf019db4a63fa98aee4e483ec28b8bc64ff5 (patch) | |
| tree | 421561d6e10cb9d721f0268792c610a97ddb955b /internal/client/ui/viminput/viminput.go | |
| parent | 37bdf70ea7a465f36486e4d2a9a6fdaa566fb99e (diff) | |
Pasting forward fully complete in viminput
Diffstat (limited to 'internal/client/ui/viminput/viminput.go')
| -rw-r--r-- | internal/client/ui/viminput/viminput.go | 20 |
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() |
