diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-12-16 17:08:27 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-12-16 17:08:27 +0200 |
| commit | 2ca354c92ce61260b498c819864ac98a278835eb (patch) | |
| tree | ace686bc526f9838174f923fc65960206cf8d7b9 /internal/client/ui | |
| parent | b0bb27ca25e70fca520cff5603bf13877eb5cb45 (diff) | |
Finished implementing pasting in normal mode
Diffstat (limited to 'internal/client/ui')
| -rw-r--r-- | internal/client/ui/viminput/viminput.go | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/internal/client/ui/viminput/viminput.go b/internal/client/ui/viminput/viminput.go index 87bb577..8a5ebd8 100644 --- a/internal/client/ui/viminput/viminput.go +++ b/internal/client/ui/viminput/viminput.go @@ -448,6 +448,7 @@ func (m *Model) handleNormalModeKeys(key tea.KeyMsg) { runeLines = append(runeLines, []rune(line)) } + // Note: caps to line length, needed for len=0 col=0 splittingCol := min(m.cursorColumn+1, len(line)) line := m.lines[m.cursorLine] after := line[splittingCol:] @@ -482,7 +483,21 @@ func (m *Model) handleNormalModeKeys(key tea.KeyMsg) { _, col := m.Motion("_") m.SetCursorColumn(col) } else { - // TODO: + var runeLines [][]rune + for _, line := range lines { + runeLines = append(runeLines, []rune(line)) + } + + splittingCol := m.cursorColumn + 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)) } } } |
