vim/7.4.700
2015-04-15 18:00:03 +02:00

126 lines
3.4 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
*** ../vim-7.4.699/src/ex_cmds.c 2015-03-31 13:33:00.793524956 +0200
--- src/ex_cmds.c 2015-04-15 12:35:27.510465352 +0200
***************
*** 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;
}
*** ../vim-7.4.699/src/fold.c 2015-04-13 20:52:31.744841858 +0200
--- src/fold.c 2015-04-15 12:32:53.216048664 +0200
***************
*** 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;
*** ../vim-7.4.699/src/testdir/test45.in 2010-05-15 13:04:10.000000000 +0200
--- src/testdir/test45.in 2015-04-15 12:31:42.396804175 +0200
***************
*** 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
*** ../vim-7.4.699/src/testdir/test45.ok 2010-05-15 13:04:10.000000000 +0200
--- src/testdir/test45.ok 2015-04-15 12:31:42.400804132 +0200
***************
*** 16,18 ****
--- 16,23 ----
1
2
0
+ Test fdm=indent START
+ line3
+ line4
+ Test fdm=indent and :move bug END
+ line2
*** ../vim-7.4.699/src/version.c 2015-04-13 20:52:31.744841858 +0200
--- src/version.c 2015-04-15 12:43:01.329818386 +0200
***************
*** 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 ///