Patch 7.0.126
Problem:    When 'formatexpr' uses setline() and later internal formatting is
            used undo information is not correct. (Jiri Cerny, Benji Fisher)
Solution:   Set ins_need_undo after using 'formatexpr'.
Files:      src/edit.c


*** ../vim-7.0.125/src/edit.c   Fri Oct  6 20:39:58 2006
--- src/edit.c  Tue Oct 10 12:46:04 2006
***************
*** 5333,5340 ****
        /* Format with 'formatexpr' when it's set.  Use internal formatting
         * when 'formatexpr' isn't set or it returns non-zero. */
  #if defined(FEAT_EVAL)
!       if (*curbuf->b_p_fex == NUL
!                            || fex_format(curwin->w_cursor.lnum, 1L, c) != 0)
  #endif
            internal_format(textwidth, second_indent, flags, c == NUL);
      }
--- 5333,5348 ----
        /* Format with 'formatexpr' when it's set.  Use internal formatting
         * when 'formatexpr' isn't set or it returns non-zero. */
  #if defined(FEAT_EVAL)
!       int do_internal = TRUE;
! 
!       if (*curbuf->b_p_fex != NUL)
!       {
!           do_internal = (fex_format(curwin->w_cursor.lnum, 1L, c) != 0);
!           /* It may be required to save for undo again, e.g. when setline()
!            * was called. */
!           ins_need_undo = TRUE;
!       }
!       if (do_internal)
  #endif
            internal_format(textwidth, second_indent, flags, c == NUL);
      }
*** ../vim-7.0.125/src/version.c        Tue Oct 10 13:27:30 2006
--- src/version.c       Tue Oct 10 15:47:20 2006
***************
*** 668,669 ****
--- 668,671 ----
  {   /* Add new patch number below this line */
+ /**/
+     126,
  /**/

-- 
How To Keep A Healthy Level Of Insanity:
16. Have your coworkers address you by your wrestling name, Rock Hard Kim.

 /// 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    ///

Reply via email to