summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.319
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2012-09-26 01:10:42 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:51:55 +0200
commit9664bee729d487bcc0a0bc35859f8e13d5421c75 (patch)
treeb428a16618e36ed864a8d76ea3435e19a452bf90 /source/ap/vim/patches/7.3.319
parent75a4a592e5ccda30715f93563d741b83e0dcf39e (diff)
downloadcurrent-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.gz
current-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.xz
Slackware 14.0slackware-14.0
Wed Sep 26 01:10:42 UTC 2012 Slackware 14.0 x86_64 stable is released! We're perfectionists here at Slackware, so this release has been a long time a-brewing. But we think you'll agree that it was worth the wait. Slackware 14.0 combines modern components, ease of use, and flexible configuration... our "KISS" philosophy demands it. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Thanks to everyone who helped make this happen. The Slackware team, the upstream developers, and (of course) the awesome Slackware user community. Have fun! :-)
Diffstat (limited to 'source/ap/vim/patches/7.3.319')
-rw-r--r--source/ap/vim/patches/7.3.319154
1 files changed, 154 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.319 b/source/ap/vim/patches/7.3.319
new file mode 100644
index 000000000..68448ab63
--- /dev/null
+++ b/source/ap/vim/patches/7.3.319
@@ -0,0 +1,154 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.319
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.319 (after 7.3.311)
+Problem: Redobuff doesn't always include changes of the completion leader.
+Solution: Insert backspaces as needed. (idea by Taro Muraoka)
+Files: src/edit.c
+
+
+*** ../vim-7.3.318/src/edit.c 2011-09-14 16:52:02.000000000 +0200
+--- src/edit.c 2011-09-21 17:59:10.000000000 +0200
+***************
+*** 163,168 ****
+--- 163,169 ----
+ static void ins_compl_set_original_text __ARGS((char_u *str));
+ static void ins_compl_addfrommatch __ARGS((void));
+ static int ins_compl_prep __ARGS((int c));
++ static void ins_compl_fixRedoBufForLeader __ARGS((char_u *ptr_arg));
+ static buf_T *ins_compl_next_buf __ARGS((buf_T *buf, int flag));
+ #if defined(FEAT_COMPL_FUNC) || defined(FEAT_EVAL)
+ static void ins_compl_add_list __ARGS((list_T *list));
+***************
+*** 3713,3721 ****
+ * memory that was used, and make sure we can redo the insert. */
+ if (compl_curr_match != NULL || compl_leader != NULL || c == Ctrl_E)
+ {
+- char_u *p;
+- int temp = 0;
+-
+ /*
+ * If any of the original typed text has been changed, eg when
+ * ignorecase is set, we must add back-spaces to the redo
+--- 3714,3719 ----
+***************
+*** 3726,3750 ****
+ */
+ if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E)
+ ptr = compl_curr_match->cp_str;
+- else if (compl_leader != NULL)
+- ptr = compl_leader;
+ else
+! ptr = compl_orig_text;
+! if (compl_orig_text != NULL)
+! {
+! p = compl_orig_text;
+! for (temp = 0; p[temp] != NUL && p[temp] == ptr[temp];
+! ++temp)
+! ;
+! #ifdef FEAT_MBYTE
+! if (temp > 0)
+! temp -= (*mb_head_off)(compl_orig_text, p + temp);
+! #endif
+! for (p += temp; *p != NUL; mb_ptr_adv(p))
+! AppendCharToRedobuff(K_BS);
+! }
+! if (ptr != NULL)
+! AppendToRedobuffLit(ptr + temp, -1);
+ }
+
+ #ifdef FEAT_CINDENT
+--- 3724,3732 ----
+ */
+ if (compl_curr_match != NULL && compl_used_match && c != Ctrl_E)
+ ptr = compl_curr_match->cp_str;
+ else
+! ptr = NULL;
+! ins_compl_fixRedoBufForLeader(ptr);
+ }
+
+ #ifdef FEAT_CINDENT
+***************
+*** 3834,3839 ****
+--- 3816,3859 ----
+ }
+
+ /*
++ * Fix the redo buffer for the completion leader replacing some of the typed
++ * text. This inserts backspaces and appends the changed text.
++ * "ptr" is the known leader text or NUL.
++ */
++ static void
++ ins_compl_fixRedoBufForLeader(ptr_arg)
++ char_u *ptr_arg;
++ {
++ int len;
++ char_u *p;
++ char_u *ptr = ptr_arg;
++
++ if (ptr == NULL)
++ {
++ if (compl_leader != NULL)
++ ptr = compl_leader;
++ else
++ return; /* nothing to do */
++ }
++ if (compl_orig_text != NULL)
++ {
++ p = compl_orig_text;
++ for (len = 0; p[len] != NUL && p[len] == ptr[len]; ++len)
++ ;
++ #ifdef FEAT_MBYTE
++ if (len > 0)
++ len -= (*mb_head_off)(p, p + len);
++ #endif
++ for (p += len; *p != NUL; mb_ptr_adv(p))
++ AppendCharToRedobuff(K_BS);
++ }
++ else
++ len = 0;
++ if (ptr != NULL)
++ AppendToRedobuffLit(ptr + len, -1);
++ }
++
++ /*
+ * Loops through the list of windows, loaded-buffers or non-loaded-buffers
+ * (depending on flag) starting from buf and looking for a non-scanned
+ * buffer (other than curbuf). curbuf is special, if it is called with
+***************
+*** 5241,5246 ****
+--- 5261,5270 ----
+ else
+ edit_submode = (char_u *)_(CTRL_X_MSG(ctrl_x_mode));
+
++ /* If any of the original typed text has been changed we need to fix
++ * the redo buffer. */
++ ins_compl_fixRedoBufForLeader(NULL);
++
+ /* Always add completion for the original text. */
+ vim_free(compl_orig_text);
+ compl_orig_text = vim_strnsave(line + compl_col, compl_length);
+*** ../vim-7.3.318/src/version.c 2011-09-21 17:33:49.000000000 +0200
+--- src/version.c 2011-09-21 18:21:07.000000000 +0200
+***************
+*** 711,712 ****
+--- 711,714 ----
+ { /* Add new patch number below this line */
++ /**/
++ 319,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+27. You refer to your age as 3.x.
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ an exciting new programming language -- http://www.Zimbu.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///