ed_delete_prev_word(): * Delete from beginning of current word to cursor * [M-^?] [^W] */
| 108 | * [M-^?] [^W] |
| 109 | */ |
| 110 | protected el_action_t |
| 111 | /*ARGSUSED*/ |
| 112 | ed_delete_prev_word(EditLine *el, Int c __attribute__((__unused__))) |
| 113 | { |
| 114 | Char *cp, *p, *kp; |
| 115 | |
| 116 | if (el->el_line.cursor == el->el_line.buffer) |
| 117 | return CC_ERROR; |
| 118 | |
| 119 | cp = c__prev_word(el->el_line.cursor, el->el_line.buffer, |
| 120 | el->el_state.argument, ce__isword); |
| 121 | |
| 122 | for (p = cp, kp = el->el_chared.c_kill.buf; p < el->el_line.cursor; p++) |
| 123 | *kp++ = *p; |
| 124 | el->el_chared.c_kill.last = kp; |
| 125 | |
| 126 | c_delbefore(el, (int)(el->el_line.cursor - cp));/* delete before dot */ |
| 127 | el->el_line.cursor = cp; |
| 128 | if (el->el_line.cursor < el->el_line.buffer) |
| 129 | el->el_line.cursor = el->el_line.buffer; /* bounds check */ |
| 130 | return CC_REFRESH; |
| 131 | } |
| 132 | |
| 133 | |
| 134 | /* ed_delete_next_char(): |
nothing calls this directly
no test coverage detected