Mercurial > vim
diff src/ex_cmds.c @ 16698:23af483c4ceb v8.1.1351
patch 8.1.1351: text property wrong after :substitute
commit https://github.com/vim/vim/commit/338dfdad3844ebb1ce1d56c421d1f698c086eb0c
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun May 19 15:19:57 2019 +0200
patch 8.1.1351: text property wrong after :substitute
Problem: Text property wrong after :substitute.
Solution: Save for undo before changing any text properties.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 19 May 2019 15:30:07 +0200 |
parents | 6ea3f93b4428 |
children | 77bcb5055fec |
line wrap: on
line diff
--- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -5187,6 +5187,9 @@ do_sub(exarg_T *eap) int do_again; /* do it again after joining lines */ int skip_match = FALSE; linenr_T sub_firstlnum; /* nr of first sub line */ +#ifdef FEAT_TEXT_PROP + int save_for_undo = TRUE; +#endif /* * The new text is build up step by step, to avoid too much @@ -5603,9 +5606,14 @@ do_sub(exarg_T *eap) p1 = sub_firstline; #ifdef FEAT_TEXT_PROP if (curbuf->b_has_textprop) - adjust_prop_columns(lnum, regmatch.startpos[0].col, + { + // When text properties are changed, need to save for + // undo first, unless done already. + if (adjust_prop_columns(lnum, regmatch.startpos[0].col, sublen - 1 - (regmatch.endpos[0].col - - regmatch.startpos[0].col)); + - regmatch.startpos[0].col), save_for_undo)) + save_for_undo = FALSE; + } #endif } else