diff options
author | Bram Moolenaar <Bram@vim.org> | 2012-01-20 14:32:27 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2012-01-20 14:32:27 +0100 |
commit | 6d6cec83750a4158044a25696e8ae69eda1c3798 (patch) | |
tree | a4b76810c0e16970959d8decc87db3ef949122d8 | |
parent | 73633f84d6242936b3066ed29f332f682aa584f9 (diff) | |
download | vim-git-7.3.404.tar.gz |
updated for version 7.3.404v7.3.404
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)
-rw-r--r-- | src/edit.c | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/edit.c b/src/edit.c index 4289ff5cd..08b555ba2 100644 --- a/src/edit.c +++ b/src/edit.c @@ -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) { diff --git a/src/version.c b/src/version.c index 7fc230282..e2a2fa21d 100644 --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 404, +/**/ 403, /**/ 402, |