]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.404 v7.3.404
authorBram Moolenaar <Bram@vim.org>
Fri, 20 Jan 2012 13:32:27 +0000 (14:32 +0100)
committerBram Moolenaar <Bram@vim.org>
Fri, 20 Jan 2012 13:32:27 +0000 (14:32 +0100)
Problem:    When a complete function uses refresh "always" redo will not work
            properly.
Solution:   Do not reset compl_leader when compl_opt_refresh_always is set.
            (Yasuhiro Matsumoto)

src/edit.c
src/version.c

index 4289ff5cda44a330f67fe78954cd49aba112f825..08b555ba2c69bcd62e833c83f670261756217745 100644 (file)
@@ -3465,11 +3465,17 @@ ins_compl_addleader(c)
     if (ins_compl_need_restart())
        ins_compl_restart();
 
-    vim_free(compl_leader);
-    compl_leader = vim_strnsave(ml_get_curline() + compl_col,
+    /* When 'always' is set, don't reset compl_leader. While completing,
+     * cursor don't point original position, changing compl_leader would
+     * break redo. */
+    if (!compl_opt_refresh_always)
+    {
+       vim_free(compl_leader);
+       compl_leader = vim_strnsave(ml_get_curline() + compl_col,
                                     (int)(curwin->w_cursor.col - compl_col));
-    if (compl_leader != NULL)
-       ins_compl_new_leader();
+       if (compl_leader != NULL)
+           ins_compl_new_leader();
+    }
 }
 
 /*
@@ -4554,6 +4560,11 @@ ins_compl_next(allow_get_expansion, count, insert_match)
     int            found_end = FALSE;
     int            advance;
 
+    /* When user complete function return -1 for findstart which is next
+     * time of 'always', compl_shown_match become NULL. */
+    if (compl_shown_match == NULL)
+       return -1;
+
     if (compl_leader != NULL
                        && (compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0)
     {
index 7fc230282438640a6c5f17af2512dfa32c1f5463..e2a2fa21d13a5b608c80ea3ab7e656ebfd69fe07 100644 (file)
@@ -714,6 +714,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    404,
 /**/
     403,
 /**/