move del_char, del_chars

This commit is contained in:
Daniel Hahler 2019-06-09 19:11:37 +02:00
parent 75598927f2
commit 0b3ee2e8ac
2 changed files with 26 additions and 68 deletions

View File

@ -672,46 +672,40 @@ void ins_str(char_u *s)
curwin->w_cursor.col += newlen; curwin->w_cursor.col += newlen;
} }
/* // Delete one character under the cursor.
* Delete one character under the cursor. // If "fixpos" is true, don't leave the cursor on the NUL after the line.
* If "fixpos" is TRUE, don't leave the cursor on the NUL after the line. // Caller must have prepared for undo.
* Caller must have prepared for undo. //
* // return FAIL for failure, OK otherwise
* return FAIL for failure, OK otherwise int del_char(bool fixpos)
*/
int
del_char(int fixpos)
{ {
if (has_mbyte) if (has_mbyte) {
{ // Make sure the cursor is at the start of a character.
// Make sure the cursor is at the start of a character. mb_adjust_cursor();
mb_adjust_cursor(); if (*get_cursor_pos_ptr() == NUL)
if (*ml_get_cursor() == NUL) return FAIL;
return FAIL; return del_chars(1L, fixpos);
return del_chars(1L, fixpos); }
} return del_bytes(1, fixpos, true);
return del_bytes(1L, fixpos, TRUE);
} }
/* /*
* Like del_bytes(), but delete characters instead of bytes. * Like del_bytes(), but delete characters instead of bytes.
*/ */
int int del_chars(long count, int fixpos)
del_chars(long count, int fixpos)
{ {
long bytes = 0; int bytes = 0;
long i; long i;
char_u *p; char_u *p;
int l; int l;
p = ml_get_cursor(); p = get_cursor_pos_ptr();
for (i = 0; i < count && *p != NUL; ++i) for (i = 0; i < count && *p != NUL; ++i) {
{ l = (*mb_ptr2len)(p);
l = (*mb_ptr2len)(p); bytes += l;
bytes += l; p += l;
p += l; }
} return del_bytes(bytes, fixpos, TRUE);
return del_bytes(bytes, fixpos, TRUE);
} }
/* /*

View File

@ -1398,42 +1398,6 @@ void ins_char(int c)
ins_char_bytes(buf, n); ins_char_bytes(buf, n);
} }
// 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 (*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 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);
}
/// Delete "count" bytes under the cursor. /// Delete "count" bytes under the cursor.
/// If "fixpos" is true, don't leave the cursor on the NUL after the line. /// If "fixpos" is true, don't leave the cursor on the NUL after the line.
/// Caller must have prepared for undo. /// Caller must have prepared for undo.