cv_undo(): * Handle state for the vi undo command */
| 56 | * Handle state for the vi undo command |
| 57 | */ |
| 58 | protected void |
| 59 | cv_undo(EditLine *el) |
| 60 | { |
| 61 | c_undo_t *vu = &el->el_chared.c_undo; |
| 62 | c_redo_t *r = &el->el_chared.c_redo; |
| 63 | size_t size; |
| 64 | |
| 65 | /* Save entire line for undo */ |
| 66 | size = (size_t)(el->el_line.lastchar - el->el_line.buffer); |
| 67 | vu->len = (ssize_t)size; |
| 68 | vu->cursor = (int)(el->el_line.cursor - el->el_line.buffer); |
| 69 | (void)memcpy(vu->buf, el->el_line.buffer, size * sizeof(*vu->buf)); |
| 70 | |
| 71 | /* save command info for redo */ |
| 72 | r->count = el->el_state.doingarg ? el->el_state.argument : 0; |
| 73 | r->action = el->el_chared.c_vcmd.action; |
| 74 | r->pos = r->buf; |
| 75 | r->cmd = el->el_state.thiscmd; |
| 76 | r->ch = el->el_state.thisch; |
| 77 | } |
| 78 | |
| 79 | /* cv_yank(): |
| 80 | * Save yank/delete data for paste |
no outgoing calls
no test coverage detected