components/vim/vim72-patches/7.2.370
changeset 379 c6a17bba1da3
parent 378 f0b61ed1d10d
child 380 e92b3b4a1c66
equal deleted inserted replaced
378:f0b61ed1d10d 379:c6a17bba1da3
     1 To: [email protected]
       
     2 Subject: Patch 7.2.370
       
     3 Fcc: outbox
       
     4 From: Bram Moolenaar <[email protected]>
       
     5 Mime-Version: 1.0
       
     6 Content-Type: text/plain; charset=UTF-8
       
     7 Content-Transfer-Encoding: 8bit
       
     8 ------------
       
     9 
       
    10 Patch 7.2.370 (after 7.2.356)
       
    11 Problem:    A redraw may cause folds to be closed.
       
    12 Solution:   Revert part of the previous patch.  Add a test. (Lech Lorens)
       
    13 Files:	    src/diff.c, src/fold.c, src/option.c, src/testdir/test45.in,
       
    14 	    src/testdir/test45.ok
       
    15 
       
    16 
       
    17 *** ../vim-7.2.369/src/diff.c	2009-07-22 16:22:33.000000000 +0200
       
    18 --- src/diff.c	2010-02-24 14:31:12.000000000 +0100
       
    19 ***************
       
    20 *** 1117,1142 ****
       
    21       win_T	*wp;
       
    22       int		addbuf;		/* Add buffer to diff. */
       
    23   {
       
    24       wp->w_p_diff = TRUE;
       
    25       wp->w_p_scb = TRUE;
       
    26       wp->w_p_wrap = FALSE;
       
    27   # ifdef FEAT_FOLDING
       
    28 !     {
       
    29 ! 	win_T	    *old_curwin = curwin;
       
    30 ! 
       
    31 ! 	curwin = wp;
       
    32 ! 	curbuf = curwin->w_buffer;
       
    33 ! 	set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
       
    34   						       OPT_LOCAL|OPT_FREE, 0);
       
    35 ! 	curwin = old_curwin;
       
    36 ! 	curbuf = curwin->w_buffer;
       
    37 ! 	wp->w_p_fdc = diff_foldcolumn;
       
    38 ! 	wp->w_p_fen = TRUE;
       
    39 ! 	wp->w_p_fdl = 0;
       
    40 ! 	foldUpdateAll(wp);
       
    41 ! 	/* make sure topline is not halfway a fold */
       
    42 ! 	changed_window_setting_win(wp);
       
    43 !     }
       
    44   # endif
       
    45   #ifdef FEAT_SCROLLBIND
       
    46       if (vim_strchr(p_sbo, 'h') == NULL)
       
    47 --- 1117,1147 ----
       
    48       win_T	*wp;
       
    49       int		addbuf;		/* Add buffer to diff. */
       
    50   {
       
    51 + # ifdef FEAT_FOLDING
       
    52 +     win_T *old_curwin = curwin;
       
    53 + 
       
    54 +     /* close the manually opened folds */
       
    55 +     curwin = wp;
       
    56 +     newFoldLevel();
       
    57 +     curwin = old_curwin;
       
    58 + # endif
       
    59 + 
       
    60       wp->w_p_diff = TRUE;
       
    61       wp->w_p_scb = TRUE;
       
    62       wp->w_p_wrap = FALSE;
       
    63   # ifdef FEAT_FOLDING
       
    64 !     curwin = wp;
       
    65 !     curbuf = curwin->w_buffer;
       
    66 !     set_string_option_direct((char_u *)"fdm", -1, (char_u *)"diff",
       
    67   						       OPT_LOCAL|OPT_FREE, 0);
       
    68 !     curwin = old_curwin;
       
    69 !     curbuf = curwin->w_buffer;
       
    70 !     wp->w_p_fdc = diff_foldcolumn;
       
    71 !     wp->w_p_fen = TRUE;
       
    72 !     wp->w_p_fdl = 0;
       
    73 !     foldUpdateAll(wp);
       
    74 !     /* make sure topline is not halfway a fold */
       
    75 !     changed_window_setting_win(wp);
       
    76   # endif
       
    77   #ifdef FEAT_SCROLLBIND
       
    78       if (vim_strchr(p_sbo, 'h') == NULL)
       
    79 *** ../vim-7.2.369/src/fold.c	2010-02-03 18:14:41.000000000 +0100
       
    80 --- src/fold.c	2010-02-24 13:09:04.000000000 +0100
       
    81 ***************
       
    82 *** 854,865 ****
       
    83   	    && fp->fd_top < bot)
       
    84       {
       
    85   	fp->fd_small = MAYBE;
       
    86 - 
       
    87 - 	/* Not sure if this is the right place to reset fd_flags (suggested by
       
    88 - 	 * Lech Lorens). */
       
    89 -         if (wp->w_foldinvalid)
       
    90 -             fp->fd_flags = FD_LEVEL;
       
    91 - 
       
    92   	++fp;
       
    93       }
       
    94   
       
    95 --- 854,859 ----
       
    96 *** ../vim-7.2.369/src/option.c	2010-02-11 17:02:04.000000000 +0100
       
    97 --- src/option.c	2010-02-24 13:09:44.000000000 +0100
       
    98 ***************
       
    99 *** 6586,6592 ****
       
   100 --- 6586,6596 ----
       
   101   		|| *curwin->w_p_fdm == NUL)
       
   102   	    errmsg = e_invarg;
       
   103   	else
       
   104 + 	{
       
   105   	    foldUpdateAll(curwin);
       
   106 + 	    if (foldmethodIsDiff(curwin))
       
   107 + 		newFoldLevel();
       
   108 + 	}
       
   109       }
       
   110   # ifdef FEAT_EVAL
       
   111       /* 'foldexpr' */
       
   112 *** ../vim-7.2.369/src/testdir/test45.in	2009-11-03 14:46:35.000000000 +0100
       
   113 --- src/testdir/test45.in	2010-02-24 13:02:39.000000000 +0100
       
   114 ***************
       
   115 *** 36,41 ****
       
   116 --- 36,43 ----
       
   117   k:call append("$", getline("."))
       
   118   jAcommentstart  Acommentend:set fdl=1
       
   119   3j:call append("$", getline("."))
       
   120 + :set fdl=0
       
   121 + zOj:call append("$", getline("."))
       
   122   :" test expression folding
       
   123   :fun Flvl()
       
   124     let l = getline(v:lnum)
       
   125 *** ../vim-7.2.369/src/testdir/test45.ok	2009-11-03 14:46:35.000000000 +0100
       
   126 --- src/testdir/test45.ok	2010-02-24 12:58:55.000000000 +0100
       
   127 ***************
       
   128 *** 11,16 ****
       
   129 --- 11,17 ----
       
   130   folding 9 ii
       
   131       3 cc
       
   132   7 gg
       
   133 + 8 hh
       
   134   expr 2
       
   135   1
       
   136   2
       
   137 *** ../vim-7.2.369/src/version.c	2010-02-24 13:59:09.000000000 +0100
       
   138 --- src/version.c	2010-02-24 14:28:20.000000000 +0100
       
   139 ***************
       
   140 *** 683,684 ****
       
   141 --- 683,686 ----
       
   142   {   /* Add new patch number below this line */
       
   143 + /**/
       
   144 +     370,
       
   145   /**/
       
   146 
       
   147 -- 
       
   148 MAN:    Fetchez la vache!
       
   149 GUARD:  Quoi?
       
   150 MAN:    Fetchez la vache!
       
   151                  "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
       
   152 
       
   153  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
       
   154 ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
       
   155 \\\        download, build and distribute -- http://www.A-A-P.org        ///
       
   156  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///