| To: vim_dev@googlegroups.com |
| Subject: Patch 7.4.700 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.4.700 |
| Problem: Fold can't be opened after ":move". (Ein Brown) |
| Solution: Delete the folding information and update it afterwards. |
| (Christian Brabandt) |
| Files: src/ex_cmds.c, src/fold.c, src/testdir/test45.in, |
| src/testdir/test45.ok |
| |
| |
| |
| |
| |
| *** 741,746 **** |
| --- 741,756 ---- |
| linenr_T extra; /* Num lines added before line1 */ |
| linenr_T num_lines; /* Num lines moved */ |
| linenr_T last_line; /* Last line in file after adding new text */ |
| + #ifdef FEAT_FOLDING |
| + int isFolded; |
| + |
| + /* Moving lines seems to corrupt the folds, delete folding info now |
| + * and recreate it when finished. Don't do this for manual folding, it |
| + * would delete all folds. */ |
| + isFolded = hasAnyFolding(curwin) && !foldmethodIsManual(curwin); |
| + if (isFolded) |
| + deleteFoldRecurse(&curwin->w_folds); |
| + #endif |
| |
| if (dest >= line1 && dest < line2) |
| { |
| |
| *** 839,844 **** |
| --- 849,860 ---- |
| else |
| changed_lines(dest + 1, 0, line1 + num_lines, 0L); |
| |
| + #ifdef FEAT_FOLDING |
| + /* recreate folds */ |
| + if (isFolded) |
| + foldUpdateAll(curwin); |
| + #endif |
| + |
| return OK; |
| } |
| |
| |
| |
| |
| *** 847,854 **** |
| fold_T *fp; |
| |
| /* Mark all folds from top to bot as maybe-small. */ |
| ! (void)foldFind(&curwin->w_folds, top, &fp); |
| ! while (fp < (fold_T *)curwin->w_folds.ga_data + curwin->w_folds.ga_len |
| && fp->fd_top < bot) |
| { |
| fp->fd_small = MAYBE; |
| --- 847,854 ---- |
| fold_T *fp; |
| |
| /* Mark all folds from top to bot as maybe-small. */ |
| ! (void)foldFind(&wp->w_folds, top, &fp); |
| ! while (fp < (fold_T *)wp->w_folds.ga_data + wp->w_folds.ga_len |
| && fp->fd_top < bot) |
| { |
| fp->fd_small = MAYBE; |
| |
| |
| |
| *** 63,68 **** |
| --- 63,78 ---- |
| :call append("$", foldlevel(".")) |
| :/^last/+1,$w! test.out |
| :delfun Flvl |
| + :new |
| + iTest fdm=indent and :move bug END |
| + line2 |
| + Test fdm=indent START |
| + line3 |
| + line4 |
| + :set fdm=indent |
| + :1m1 |
| + 2jzc:m0 |
| + :%w >> test.out |
| :qa! |
| ENDTEST |
| |
| |
| |
| |
| *** 16,18 **** |
| --- 16,23 ---- |
| 1 |
| 2 |
| 0 |
| + Test fdm=indent START |
| + line3 |
| + line4 |
| + Test fdm=indent and :move bug END |
| + line2 |
| |
| |
| |
| *** 743,744 **** |
| --- 743,746 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 700, |
| /**/ |
| |
| -- |
| Computers make very fast, very accurate, mistakes. |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |