void buf_lastins(Buf* buf, size_t* beg, size_t* end) {
Log* log = buf->undo;
- while (log) {
- if (log->insert)
- break;
- log = log->next;
- }
- if (log) {
+ if (log && log->insert) {
*beg = log->data.ins.beg;
*end = log->data.ins.end;
}
}
void view_selword(View* view, size_t row, size_t col) {
+ buf_loglock(&(view->buffer));
view_setcursor(view, row, col);
Sel sel = view->selection;
selbigword(view, &sel);
}
void view_selprev(View* view) {
+ buf_loglock(&(view->buffer));
Sel sel = view->selection;
buf_lastins(&(view->buffer), &sel.beg, &sel.end);
view->selection = sel;
}
void view_select(View* view, size_t row, size_t col) {
+ buf_loglock(&(view->buffer));
view_setcursor(view, row, col);
Sel sel = view->selection;
selcontext(view, &sel);