diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/extmark.c | 62 | ||||
-rw-r--r-- | src/nvim/extmark.h | 11 |
2 files changed, 38 insertions, 35 deletions
diff --git a/src/nvim/extmark.c b/src/nvim/extmark.c index 91ca525533..bda7829507 100644 --- a/src/nvim/extmark.c +++ b/src/nvim/extmark.c @@ -481,15 +481,15 @@ void extmark_apply_undo(ExtmarkUndoObject undo_info, bool undo) if (undo) { extmark_splice(curbuf, splice.start_row, splice.start_col, - splice.newextent_row, splice.newextent_col, - splice.oldextent_row, splice.oldextent_col, + splice.new_row, splice.new_col, + splice.old_row, splice.old_col, kExtmarkNoUndo); } else { extmark_splice(curbuf, splice.start_row, splice.start_col, - splice.oldextent_row, splice.oldextent_col, - splice.newextent_row, splice.newextent_col, + splice.old_row, splice.old_col, + splice.new_row, splice.new_col, kExtmarkNoUndo); } // kExtmarkSavePos @@ -555,29 +555,29 @@ void extmark_adjust(buf_T *buf, void extmark_splice(buf_T *buf, int start_row, colnr_T start_col, - int oldextent_row, colnr_T oldextent_col, - int newextent_row, colnr_T newextent_col, + int old_row, colnr_T old_col, + int new_row, colnr_T new_col, ExtmarkOp undo) { buf_updates_send_splice(buf, start_row, start_col, - oldextent_row, oldextent_col, - newextent_row, newextent_col); + old_row, old_col, + new_row, new_col); - if (undo == kExtmarkUndo && (oldextent_row > 0 || oldextent_col > 0)) { + if (undo == kExtmarkUndo && (old_row > 0 || old_col > 0)) { // Copy marks that would be effected by delete // TODO(bfredl): Be "smart" about gravity here, left-gravity at the // beginning and right-gravity at the end need not be preserved. // Also be smart about marks that already have been saved (important for // merge!) - int end_row = start_row + oldextent_row; - int end_col = (oldextent_row ? 0 : start_col) + oldextent_col; + int end_row = start_row + old_row; + int end_col = (old_row ? 0 : start_col) + old_col; u_extmark_copy(buf, start_row, start_col, end_row, end_col); } marktree_splice(buf->b_marktree, start_row, start_col, - oldextent_row, oldextent_col, - newextent_row, newextent_col); + old_row, old_col, + new_row, new_col); if (undo == kExtmarkUndo) { u_header_T *uhp = u_force_get_undo_header(buf); @@ -589,25 +589,25 @@ void extmark_splice(buf_T *buf, // TODO(bfredl): this is quite rudimentary. We merge small (within line) // inserts with each other and small deletes with each other. Add full // merge algorithm later. - if (oldextent_row == 0 && newextent_row == 0 && kv_size(uhp->uh_extmark)) { + if (old_row == 0 && new_row == 0 && kv_size(uhp->uh_extmark)) { ExtmarkUndoObject *item = &kv_A(uhp->uh_extmark, kv_size(uhp->uh_extmark)-1); if (item->type == kExtmarkSplice) { ExtmarkSplice *splice = &item->data.splice; - if (splice->start_row == start_row && splice->oldextent_row == 0 - && splice->newextent_row == 0) { - if (oldextent_col == 0 && start_col >= splice->start_col - && start_col <= splice->start_col+splice->newextent_col) { - splice->newextent_col += newextent_col; + if (splice->start_row == start_row && splice->old_row == 0 + && splice->new_row == 0) { + if (old_col == 0 && start_col >= splice->start_col + && start_col <= splice->start_col+splice->new_col) { + splice->new_col += new_col; merged = true; - } else if (newextent_col == 0 - && start_col == splice->start_col+splice->newextent_col) { - splice->oldextent_col += oldextent_col; + } else if (new_col == 0 + && start_col == splice->start_col+splice->new_col) { + splice->old_col += old_col; merged = true; - } else if (newextent_col == 0 - && start_col + oldextent_col == splice->start_col) { + } else if (new_col == 0 + && start_col + old_col == splice->start_col) { splice->start_col = start_col; - splice->oldextent_col += oldextent_col; + splice->old_col += old_col; merged = true; } } @@ -618,10 +618,10 @@ void extmark_splice(buf_T *buf, ExtmarkSplice splice; splice.start_row = start_row; splice.start_col = start_col; - splice.oldextent_row = oldextent_row; - splice.oldextent_col = oldextent_col; - splice.newextent_row = newextent_row; - splice.newextent_col = newextent_col; + splice.old_row = old_row; + splice.old_col = old_col; + splice.new_row = new_row; + splice.new_col = new_col; kv_push(uhp->uh_extmark, ((ExtmarkUndoObject){ .type = kExtmarkSplice, @@ -632,10 +632,10 @@ void extmark_splice(buf_T *buf, void extmark_splice_cols(buf_T *buf, int start_row, colnr_T start_col, - colnr_T oldextent, colnr_T newextent, + colnr_T old_col, colnr_T new_col, ExtmarkOp undo) { - extmark_splice(buf, start_row, start_col, 0, oldextent, 0, newextent, undo); + extmark_splice(buf, start_row, start_col, 0, old_col, 0, new_col, undo); } void extmark_move_region(buf_T *buf, diff --git a/src/nvim/extmark.h b/src/nvim/extmark.h index c569e8b78d..e1197834bd 100644 --- a/src/nvim/extmark.h +++ b/src/nvim/extmark.h @@ -25,10 +25,13 @@ typedef kvec_t(ExtmarkInfo) ExtmarkInfoArray; typedef struct { int start_row; colnr_T start_col; - int oldextent_row; - colnr_T oldextent_col; - int newextent_row; - colnr_T newextent_col; + int old_row; + colnr_T old_col; + int new_row; + colnr_T new_col; + size_t start_byte; + size_t old_byte; + size_t new_byte; } ExtmarkSplice; // adjust marks after :move operation |