diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-12-09 17:47:18 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-12-09 17:47:18 +0200 |
| commit | a4e069b3309e576ce5f8df085f375c2dd7839c3d (patch) | |
| tree | fbac8d35fa8ee5fb5ad87c1b75d434bdac7e2985 /internal/client/ui/viminput/viminput.go | |
| parent | f9971074a689987ae4eb477aa49afb341778f3c8 (diff) | |
Implemented dd, cc, yy in viminput
Diffstat (limited to 'internal/client/ui/viminput/viminput.go')
| -rw-r--r-- | internal/client/ui/viminput/viminput.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/internal/client/ui/viminput/viminput.go b/internal/client/ui/viminput/viminput.go index 41d8875..36846eb 100644 --- a/internal/client/ui/viminput/viminput.go +++ b/internal/client/ui/viminput/viminput.go @@ -411,6 +411,11 @@ func (m Model) Motion(motion string) (line, col int) { } func (m *Model) handleOpendingModeKeys(key tea.KeyMsg) { + if key.Type == tea.KeyEscape { + m.ResetOpending() + return + } + lnum, col := m.Motion(key.String()) if lnum != Unchanged || col != Unchanged { if lnum == Unchanged { @@ -436,6 +441,33 @@ func (m *Model) handleOpendingModeKeys(key tea.KeyMsg) { // TODO: multiline } + m.ResetOpending() + if m.pending == 'c' { + m.mode = InsertMode + } + return + } + + switch key.String() { + case "c": + m.lines[m.cursorLine] = []rune("") + m.SetCursorColumn(0) + + case "d": + m.Yank("\n" + string(m.lines[m.cursorLine])) + if len(m.lines) == 1 { + m.lines[0] = []rune("") + m.SetCursorColumn(0) + } else { + m.lines = slices.Delete(m.lines, m.cursorLine, m.cursorLine+1) + m.SetCursorLine(m.cursorLine) + m.SetCursorColumn(m.cursorColumn) + } + + case "y": + // TODO: Needs to make sure this works fine with multiline-pasting + // MULTILINE PASTING IS NOT IMPLEMENTED YET!!!!!! + m.Yank("\n" + string(m.lines[m.cursorLine])) } m.ResetOpending() |
