aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nvim/extmark.c62
-rw-r--r--src/nvim/extmark.h11
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