diff options
author | zeertzjq <zeertzjq@outlook.com> | 2024-03-12 06:56:06 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-12 06:56:06 +0800 |
commit | cf156377e80232aa904b92e4af29dd6c61952401 (patch) | |
tree | 9306bcb4f8e168cea5201fe1d65c88f00b848764 /src/nvim/change.c | |
parent | 9cc755ad6a60e2b028d61c1dca62f8fe20f652d7 (diff) | |
download | rneovim-cf156377e80232aa904b92e4af29dd6c61952401.tar.gz rneovim-cf156377e80232aa904b92e4af29dd6c61952401.tar.bz2 rneovim-cf156377e80232aa904b92e4af29dd6c61952401.zip |
vim-patch:8.2.4944: text properties are wrong after "cc" (#27821)
Problem: Text properties are wrong after "cc". (Axel Forsman)
Solution: Pass the deleted byte count to inserted_bytes(). (closes vim/vim#10412,
closes vim/vim#7737, closes vim/vim#5763)
https://github.com/vim/vim/commit/d0b1a09f44654bb5e29b09de1311845200f17d90
Co-authored-by: LemonBoy <thatlemon@gmail.com>
Diffstat (limited to 'src/nvim/change.c')
-rw-r--r-- | src/nvim/change.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/nvim/change.c b/src/nvim/change.c index b914bc29fe..3d06c6956e 100644 --- a/src/nvim/change.c +++ b/src/nvim/change.c @@ -1935,19 +1935,16 @@ theend: /// If "fixpos" is true fix the cursor position when done. void truncate_line(int fixpos) { - char *newp; linenr_T lnum = curwin->w_cursor.lnum; colnr_T col = curwin->w_cursor.col; + char *old_line = ml_get(lnum); + char *newp = col == 0 ? xstrdup("") : xstrnsave(old_line, (size_t)col); + int deleted = (int)strlen(old_line) - col; - if (col == 0) { - newp = xstrdup(""); - } else { - newp = xstrnsave(ml_get(lnum), (size_t)col); - } ml_replace(lnum, newp, false); // mark the buffer as changed and prepare for displaying - changed_bytes(lnum, curwin->w_cursor.col); + inserted_bytes(lnum, curwin->w_cursor.col, deleted, 0); // If "fixpos" is true we don't want to end up positioned at the NUL. if (fixpos && curwin->w_cursor.col > 0) { |