aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/change.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/change.c')
-rw-r--r--src/nvim/change.c60
1 files changed, 27 insertions, 33 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c
index 21d944fd96..206599f8e6 100644
--- a/src/nvim/change.c
+++ b/src/nvim/change.c
@@ -672,46 +672,40 @@ void ins_str(char_u *s)
curwin->w_cursor.col += newlen;
}
-/*
- * Delete one character under the cursor.
- * If "fixpos" is TRUE, don't leave the cursor on the NUL after the line.
- * Caller must have prepared for undo.
- *
- * return FAIL for failure, OK otherwise
- */
- int
-del_char(int fixpos)
+// Delete one character under the cursor.
+// If "fixpos" is true, don't leave the cursor on the NUL after the line.
+// Caller must have prepared for undo.
+//
+// return FAIL for failure, OK otherwise
+int del_char(bool fixpos)
{
- if (has_mbyte)
- {
- // Make sure the cursor is at the start of a character.
- mb_adjust_cursor();
- if (*ml_get_cursor() == NUL)
- return FAIL;
- return del_chars(1L, fixpos);
- }
- return del_bytes(1L, fixpos, TRUE);
+ if (has_mbyte) {
+ // Make sure the cursor is at the start of a character.
+ mb_adjust_cursor();
+ if (*get_cursor_pos_ptr() == NUL)
+ return FAIL;
+ return del_chars(1L, fixpos);
+ }
+ return del_bytes(1, fixpos, true);
}
/*
* Like del_bytes(), but delete characters instead of bytes.
*/
- int
-del_chars(long count, int fixpos)
+int del_chars(long count, int fixpos)
{
- long bytes = 0;
- long i;
- char_u *p;
- int l;
-
- p = ml_get_cursor();
- for (i = 0; i < count && *p != NUL; ++i)
- {
- l = (*mb_ptr2len)(p);
- bytes += l;
- p += l;
- }
- return del_bytes(bytes, fixpos, TRUE);
+ int bytes = 0;
+ long i;
+ char_u *p;
+ int l;
+
+ p = get_cursor_pos_ptr();
+ for (i = 0; i < count && *p != NUL; ++i) {
+ l = (*mb_ptr2len)(p);
+ bytes += l;
+ p += l;
+ }
+ return del_bytes(bytes, fixpos, TRUE);
}
/*