]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
updated for version 7.4.658 v7.4.658
authorBram Moolenaar <Bram@vim.org>
Sun, 8 Mar 2015 13:48:49 +0000 (14:48 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 8 Mar 2015 13:48:49 +0000 (14:48 +0100)
Problem:    'formatexpr' is evaluated too often.
Solution:   Only invoke it when beyond the 'textwidth' column, as it is
            documented. (James McCoy)

src/edit.c
src/version.c

index e8563cb2675da4b28f6530374b0d24bd3cdc510c..48e4b131c320a90fd237943bdc61c93491edb4cf 100644 (file)
@@ -5879,8 +5879,9 @@ insertchar(c, flags, second_indent)
     char_u     *p;
 #endif
     int                fo_ins_blank;
+    int                force_format = flags & INSCHAR_FORMAT;
 
-    textwidth = comp_textwidth(flags & INSCHAR_FORMAT);
+    textwidth = comp_textwidth(force_format);
     fo_ins_blank = has_format_option(FO_INS_BLANK);
 
     /*
@@ -5899,7 +5900,7 @@ insertchar(c, flags, second_indent)
      *       before 'textwidth'
      */
     if (textwidth > 0
-           && ((flags & INSCHAR_FORMAT)
+           && (force_format
                || (!vim_iswhite(c)
                    && !((State & REPLACE_FLAG)
 #ifdef FEAT_VREPLACE
@@ -5916,9 +5917,12 @@ insertchar(c, flags, second_indent)
        /* 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;
+       int     do_internal = TRUE;
+       colnr_T virtcol = get_nolist_virtcol()
+                                 + char2cells(c != NUL ? c : gchar_cursor());
 
-       if (*curbuf->b_p_fex != NUL && (flags & INSCHAR_NO_FEX) == 0)
+       if (*curbuf->b_p_fex != NUL && (flags & INSCHAR_NO_FEX) == 0
+               && (force_format || virtcol > (colnr_T)textwidth))
        {
            do_internal = (fex_format(curwin->w_cursor.lnum, 1L, c) != 0);
            /* It may be required to save for undo again, e.g. when setline()
index 0e39cfbf17d85ecf860d76a183d67b11f82b8bcf..6e579e0c1b5ce49860c6291b1aaf91c981f9d880 100644 (file)
@@ -741,6 +741,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    658,
 /**/
     657,
 /**/