em_kill_region(): * Cut area between mark and cursor and save in cut buffer * [^W] */
| 174 | * [^W] |
| 175 | */ |
| 176 | protected el_action_t |
| 177 | /*ARGSUSED*/ |
| 178 | em_kill_region(EditLine *el, Int c __attribute__((__unused__))) |
| 179 | { |
| 180 | Char *kp, *cp; |
| 181 | |
| 182 | if (!el->el_chared.c_kill.mark) |
| 183 | return CC_ERROR; |
| 184 | |
| 185 | if (el->el_chared.c_kill.mark > el->el_line.cursor) { |
| 186 | cp = el->el_line.cursor; |
| 187 | kp = el->el_chared.c_kill.buf; |
| 188 | while (cp < el->el_chared.c_kill.mark) |
| 189 | *kp++ = *cp++; /* copy it */ |
| 190 | el->el_chared.c_kill.last = kp; |
| 191 | c_delafter(el, (int)(cp - el->el_line.cursor)); |
| 192 | } else { /* mark is before cursor */ |
| 193 | cp = el->el_chared.c_kill.mark; |
| 194 | kp = el->el_chared.c_kill.buf; |
| 195 | while (cp < el->el_line.cursor) |
| 196 | *kp++ = *cp++; /* copy it */ |
| 197 | el->el_chared.c_kill.last = kp; |
| 198 | c_delbefore(el, (int)(cp - el->el_chared.c_kill.mark)); |
| 199 | el->el_line.cursor = el->el_chared.c_kill.mark; |
| 200 | } |
| 201 | return CC_REFRESH; |
| 202 | } |
| 203 | |
| 204 | |
| 205 | /* em_copy_region(): |
nothing calls this directly
no test coverage detected