components/vim/vim72-patches/7.2.078
changeset 198 172fc01ce997
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/vim/vim72-patches/7.2.078	Thu Apr 07 16:25:07 2011 -0700
@@ -0,0 +1,120 @@
+To: [email protected]
+Subject: Patch 7.2.078
+Fcc: outbox
+From: Bram Moolenaar <[email protected]>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.078
+Problem:    When deleting a fold that is specified with markers the cursor
+	    position may be wrong.  Folds may not be displayed properly after
+	    a delete.  Wrong fold may be deleted.
+Solution:   Fix the problems. (mostly by Lech Lorens)
+Files:	    src/fold.c
+
+
+*** ../vim-7.2.077/src/fold.c	Fri Nov 28 21:26:50 2008
+--- src/fold.c	Tue Jan  6 14:53:26 2009
+***************
+*** 740,746 ****
+      garray_T	*found_ga;
+      fold_T	*found_fp = NULL;
+      linenr_T	found_off = 0;
+!     int		use_level = FALSE;
+      int		maybe_small = FALSE;
+      int		level = 0;
+      linenr_T	lnum = start;
+--- 740,746 ----
+      garray_T	*found_ga;
+      fold_T	*found_fp = NULL;
+      linenr_T	found_off = 0;
+!     int		use_level;
+      int		maybe_small = FALSE;
+      int		level = 0;
+      linenr_T	lnum = start;
+***************
+*** 757,762 ****
+--- 757,763 ----
+  	gap = &curwin->w_folds;
+  	found_ga = NULL;
+  	lnum_off = 0;
++ 	use_level = FALSE;
+  	for (;;)
+  	{
+  	    if (!foldFind(gap, lnum - lnum_off, &fp))
+***************
+*** 783,802 ****
+  	else
+  	{
+  	    lnum = found_fp->fd_top + found_fp->fd_len + found_off;
+- 	    did_one = TRUE;
+  
+  	    if (foldmethodIsManual(curwin))
+  		deleteFoldEntry(found_ga,
+  		    (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
+  	    else
+  	    {
+! 		if (found_fp->fd_top + found_off < first_lnum)
+! 		    first_lnum = found_fp->fd_top;
+! 		if (lnum > last_lnum)
+  		    last_lnum = lnum;
+! 		parseMarker(curwin);
+  		deleteFoldMarkers(found_fp, recursive, found_off);
+  	    }
+  
+  	    /* redraw window */
+  	    changed_window_setting();
+--- 784,804 ----
+  	else
+  	{
+  	    lnum = found_fp->fd_top + found_fp->fd_len + found_off;
+  
+  	    if (foldmethodIsManual(curwin))
+  		deleteFoldEntry(found_ga,
+  		    (int)(found_fp - (fold_T *)found_ga->ga_data), recursive);
+  	    else
+  	    {
+! 		if (first_lnum > found_fp->fd_top + found_off)
+! 		    first_lnum = found_fp->fd_top + found_off;
+! 		if (last_lnum < lnum)
+  		    last_lnum = lnum;
+! 		if (!did_one)
+! 		    parseMarker(curwin);
+  		deleteFoldMarkers(found_fp, recursive, found_off);
+  	    }
++ 	    did_one = TRUE;
+  
+  	    /* redraw window */
+  	    changed_window_setting();
+***************
+*** 811,816 ****
+--- 813,822 ----
+  	    redraw_curbuf_later(INVERTED);
+  #endif
+      }
++     else
++ 	/* Deleting markers may make cursor column invalid. */
++ 	check_cursor_col();
++ 
+      if (last_lnum > 0)
+  	changed_lines(first_lnum, (colnr_T)0, last_lnum, 0L);
+  }
+*** ../vim-7.2.077/src/version.c	Wed Dec 31 16:20:54 2008
+--- src/version.c	Tue Jan  6 15:00:36 2009
+***************
+*** 678,679 ****
+--- 678,681 ----
+  {   /* Add new patch number below this line */
++ /**/
++     78,
+  /**/
+
+-- 
+Looking at Perl through Lisp glasses, Perl looks atrocious.
+
+ /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
+///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\        download, build and distribute -- http://www.A-A-P.org        ///
+ \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///