diff --git a/7.0.035 b/7.0.035 new file mode 100644 index 0000000..fb83ceb --- /dev/null +++ b/7.0.035 @@ -0,0 +1,205 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.035 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.035 +Problem: Insert mode completion works when typed but not when replayed from + a register. (Hari Krishna Dara) + Also: Mappings for Insert mode completion don't always work. +Solution: When finding a non-completion key in the input don't interrupt + completion when it wasn't typed. + Do use mappings when checking for typeahead while still finding + completions. Avoids that completion is interrupted too soon. + Use "compl_pending" in a different way. +Files: src/edit.c + + +*** ../vim-7.0.034/src/edit.c Fri Jun 23 17:59:26 2006 +--- src/edit.c Fri Jun 23 21:32:42 2006 +*************** +*** 4166,4173 **** + { + if (compl_shows_dir == FORWARD && compl_shown_match->cp_next != NULL) + { +- if (compl_pending != 0) +- --compl_pending; + compl_shown_match = compl_shown_match->cp_next; + found_end = (compl_first_match != NULL + && (compl_shown_match->cp_next == compl_first_match +--- 4166,4171 ---- +*************** +*** 4176,4189 **** + else if (compl_shows_dir == BACKWARD + && compl_shown_match->cp_prev != NULL) + { +- if (compl_pending != 0) +- ++compl_pending; + found_end = (compl_shown_match == compl_first_match); + compl_shown_match = compl_shown_match->cp_prev; + found_end |= (compl_shown_match == compl_first_match); + } + else + { + if (advance) + { + if (compl_shows_dir == BACKWARD) +--- 4174,4197 ---- + else if (compl_shows_dir == BACKWARD + && compl_shown_match->cp_prev != NULL) + { + found_end = (compl_shown_match == compl_first_match); + compl_shown_match = compl_shown_match->cp_prev; + found_end |= (compl_shown_match == compl_first_match); + } + else + { ++ if (!allow_get_expansion) ++ { ++ if (advance) ++ { ++ if (compl_shows_dir == BACKWARD) ++ compl_pending -= todo + 1; ++ else ++ compl_pending += todo + 1; ++ } ++ return -1; ++ } ++ + if (advance) + { + if (compl_shows_dir == BACKWARD) +*************** +*** 4191,4204 **** + else + ++compl_pending; + } +- if (!allow_get_expansion) +- return -1; + + /* Find matches. */ + num_matches = ins_compl_get_exp(&compl_startpos); +! if (compl_pending != 0 && compl_direction == compl_shows_dir + && advance) +! compl_shown_match = compl_curr_match; + found_end = FALSE; + } + if ((compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0 +--- 4199,4225 ---- + else + ++compl_pending; + } + + /* Find matches. */ + num_matches = ins_compl_get_exp(&compl_startpos); +! +! /* handle any pending completions */ +! while (compl_pending != 0 && compl_direction == compl_shows_dir + && advance) +! { +! if (compl_pending > 0 && compl_shown_match->cp_next != NULL) +! { +! compl_shown_match = compl_shown_match->cp_next; +! --compl_pending; +! } +! if (compl_pending < 0 && compl_shown_match->cp_prev != NULL) +! { +! compl_shown_match = compl_shown_match->cp_prev; +! ++compl_pending; +! } +! else +! break; +! } + found_end = FALSE; + } + if ((compl_shown_match->cp_flags & ORIGINAL_TEXT) == 0 +*************** +*** 4307,4315 **** + return; + count = 0; + +! ++no_mapping; + c = vpeekc_any(); +- --no_mapping; + if (c != NUL) + { + if (vim_is_ctrl_x_key(c) && c != Ctrl_X && c != Ctrl_R) +--- 4328,4336 ---- + return; + count = 0; + +! /* Check for a typed key. Do use mappings, otherwise vim_is_ctrl_x_key() +! * can't do its work correctly. */ + c = vpeekc_any(); + if (c != NUL) + { + if (vim_is_ctrl_x_key(c) && c != Ctrl_X && c != Ctrl_R) +*************** +*** 4319,4330 **** + (void)ins_compl_next(FALSE, ins_compl_key2count(c), + c != K_UP && c != K_DOWN); + } +! else if (c != Ctrl_R) +! compl_interrupted = TRUE; + } + if (compl_pending != 0 && !got_int) +! (void)ins_compl_next(FALSE, compl_pending > 0 +! ? compl_pending : -compl_pending, TRUE); + } + + /* +--- 4340,4366 ---- + (void)ins_compl_next(FALSE, ins_compl_key2count(c), + c != K_UP && c != K_DOWN); + } +! else +! { +! /* Need to get the character to have KeyTyped set. We'll put it +! * back with vungetc() below. */ +! c = safe_vgetc(); +! +! /* Don't interrupt completion when the character wasn't typed, +! * e.g., when doing @q to replay keys. */ +! if (c != Ctrl_R && KeyTyped) +! compl_interrupted = TRUE; +! +! vungetc(c); +! } + } + if (compl_pending != 0 && !got_int) +! { +! int todo = compl_pending > 0 ? compl_pending : -compl_pending; +! +! compl_pending = 0; +! (void)ins_compl_next(FALSE, todo, TRUE); +! } + } + + /* +*** ../vim-7.0.034/src/version.c Fri Jun 23 17:59:26 2006 +--- src/version.c Fri Jun 23 21:35:39 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 35, + /**/ + +-- +So when I saw the post to comp.editors, I rushed over to the FTP site to +grab it. So I yank apart the tarball, light x candles, where x= the +vim version multiplied by the md5sum of the source divided by the MAC of +my NIC (8A3FA78155A8A1D346C3C4A), put on black robes, dim the lights, +wave a dead chicken over the hard drive, and summon the power of GNU GCC +with the magic words "make config ; make!". + [Jason Spence, compiling Vim 5.0] + + /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 /// diff --git a/README.patches b/README.patches index 9e67ffe..17a8466 100644 --- a/README.patches +++ b/README.patches @@ -47,3 +47,16 @@ Individual patches for Vim 7.0: 1470 7.0.020 GUI: crash when using 'mousefocus' 4240 7.0.021 crash when using "\\[" and "\\]" in 'errorformat 5471 7.0.022 Ruby: buffer.append() could append to the wrong buffer + 5351 7.0.023 crash after Insert mode completion without matches + 1619 7.0.024 it is possible to set arbitrary v: variables + 2606 7.0.025 crash when deleting an item from a:000 + 1800 7.0.026 Unix: when using libcall() and old error may be shown + 1344 7.0.027 (extra) Win32: hang on exit when compiled with SNiFF+ + 3014 7.0.028 (extra) OS/2: compilation problem + 1494 7.0.029 cursor position may be wrong when using getchar() + 1664 7.0.030 the ":compiler" command can't be used in a FileChangedRO event + 1808 7.0.031 after deleting a buffer its Select mode mappings remain + 1424 7.0.032 (extra, after 7.0.027) missing semicolon + 2431 7.0.033 pasting after autoindent removes the indent + 2042 7.0.034 repeating completion was wrong after typing text or using BS + 5905 7.0.035 repeating Insert mode completion doesn't work properly diff --git a/vim.spec b/vim.spec index 395725d..0684ac6 100644 --- a/vim.spec +++ b/vim.spec @@ -24,12 +24,12 @@ #used for pre-releases: %define beta %{nil} %define vimdir vim70%{?beta} -%define patchlevel 022 +%define patchlevel 035 Summary: The VIM editor. Name: vim Version: %{baseversion}.%{beta}%{patchlevel} -Release: 2 +Release: 1 License: freeware Group: Applications/Editors Source0: ftp://ftp.vim.org/pub/vim/unix/vim-%{baseversion}%{?beta}%{?CVSDATE}.tar.bz2 @@ -76,6 +76,19 @@ Patch019: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.019 Patch020: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.020 Patch021: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.021 Patch022: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.022 +Patch023: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.023 +Patch024: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.024 +Patch025: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.025 +Patch026: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.026 +Patch027: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.027 +Patch028: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.028 +Patch029: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.029 +Patch030: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.030 +Patch031: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.031 +Patch032: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.032 +Patch033: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.033 +Patch034: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.034 +Patch035: ftp://ftp.vim.org/pub/vim/patches/7.0/7.0.035 Patch3000: vim-7.0-syntax.patch @@ -229,6 +242,22 @@ perl -pi -e "s,bin/nawk,bin/awk,g" runtime/tools/mve.awk %patch020 -p0 %patch021 -p0 %patch022 -p0 +%patch023 -p0 +%patch024 -p0 +%patch025 -p0 +%patch026 -p0 +# Win32 +#patch027 -p0 +# OS/2 +#patch028 -p0 +%patch029 -p0 +%patch030 -p0 +%patch031 -p0 +# Win32 +#patch032 -p0 +%patch033 -p0 +%patch034 -p0 +%patch035 -p0 %patch3000 -p1 %patch3001 -p1 @@ -565,6 +594,9 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/*/apps/* %changelog +* Tue Jun 27 2006 Karsten Hopp 7.0.035-1 +- patchlevel 35 + * Wed Jun 21 2006 Karsten Hopp 7.0.022-2 - add binfmt_misc rpc_pipefs to fstypes for better mtab highlighting