diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/change.c | 44 | ||||
-rw-r--r-- | src/nvim/misc1.c | 33 |
2 files changed, 22 insertions, 55 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c index 03ecf2539f..21d944fd96 100644 --- a/src/nvim/change.c +++ b/src/nvim/change.c @@ -644,32 +644,32 @@ void ins_char_bytes(char_u *buf, size_t charlen) * Note: Does NOT handle Replace mode. * Caller must have prepared for undo. */ - void -ins_str(char_u *s) +void ins_str(char_u *s) { - char_u *oldp, *newp; - int newlen = (int)STRLEN(s); - int oldlen; - colnr_T col; - linenr_T lnum = curwin->w_cursor.lnum; + char_u *oldp, *newp; + int newlen = (int)STRLEN(s); + int oldlen; + colnr_T col; + linenr_T lnum = curwin->w_cursor.lnum; - if (virtual_active() && curwin->w_cursor.coladd > 0) - coladvance_force(getviscol()); + if (virtual_active() && curwin->w_cursor.coladd > 0) + coladvance_force(getviscol()); - col = curwin->w_cursor.col; - oldp = ml_get(lnum); - oldlen = (int)STRLEN(oldp); + col = curwin->w_cursor.col; + oldp = ml_get(lnum); + oldlen = (int)STRLEN(oldp); - newp = alloc_check((unsigned)(oldlen + newlen + 1)); - if (newp == NULL) - return; - if (col > 0) - mch_memmove(newp, oldp, (size_t)col); - mch_memmove(newp + col, s, (size_t)newlen); - mch_memmove(newp + col + newlen, oldp + col, (size_t)(oldlen - col + 1)); - ml_replace(lnum, newp, FALSE); - inserted_bytes(lnum, col, newlen); - curwin->w_cursor.col += newlen; + newp = (char_u *)xmalloc((size_t)oldlen + (size_t)newlen + 1); + if (col > 0) { + memmove(newp, oldp, (size_t)col); + } + memmove(newp + col, s, (size_t)newlen); + int bytes = oldlen - col + 1; + assert(bytes >= 0); + memmove(newp + col + newlen, oldp + col, (size_t)bytes); + ml_replace(lnum, newp, false); + changed_bytes(lnum, col); + curwin->w_cursor.col += newlen; } /* diff --git a/src/nvim/misc1.c b/src/nvim/misc1.c index bcb1b47e2d..cfcbfdb003 100644 --- a/src/nvim/misc1.c +++ b/src/nvim/misc1.c @@ -1398,39 +1398,6 @@ void ins_char(int c) ins_char_bytes(buf, n); } -/* - * Insert a string at the cursor position. - * Note: Does NOT handle Replace mode. - * Caller must have prepared for undo. - */ -void ins_str(char_u *s) -{ - char_u *oldp, *newp; - int newlen = (int)STRLEN(s); - int oldlen; - colnr_T col; - linenr_T lnum = curwin->w_cursor.lnum; - - if (virtual_active() && curwin->w_cursor.coladd > 0) - coladvance_force(getviscol()); - - col = curwin->w_cursor.col; - oldp = ml_get(lnum); - oldlen = (int)STRLEN(oldp); - - newp = (char_u *)xmalloc((size_t)oldlen + (size_t)newlen + 1); - if (col > 0) { - memmove(newp, oldp, (size_t)col); - } - memmove(newp + col, s, (size_t)newlen); - int bytes = oldlen - col + 1; - assert(bytes >= 0); - memmove(newp + col + newlen, oldp + col, (size_t)bytes); - ml_replace(lnum, newp, false); - changed_bytes(lnum, col); - 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. |