summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.636
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.636
parent75a4a592e5ccda30715f93563d741b83e0dcf39e (diff)
downloadcurrent-slackware-14.0.tar.gz
current-slackware-14.0.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.636')
-rw-r--r--source/ap/vim/patches/7.3.636148
1 files changed, 148 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.636 b/source/ap/vim/patches/7.3.636
new file mode 100644
index 000000000..453a7fc99
--- /dev/null
+++ b/source/ap/vim/patches/7.3.636
@@ -0,0 +1,148 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.636
+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.636 (after 7.3.625)
+Problem: Not all zero-width matches handled correctly for "gn".
+Solution: Move zero-width detection to a separate function. (Christian
+ Brabandt)
+Files: src/search.c
+
+
+*** ../vim-7.3.635/src/search.c 2012-08-08 15:27:54.000000000 +0200
+--- src/search.c 2012-08-23 15:52:50.000000000 +0200
+***************
+*** 4526,4531 ****
+--- 4526,4533 ----
+ #endif /* FEAT_TEXTOBJ */
+
+ #if defined(FEAT_VISUAL) || defined(PROTO)
++ static int is_zerowidth __ARGS((char_u *pattern));
++
+ /*
+ * Find next search match under cursor, cursor at end.
+ * Used while an operator is pending, and in Visual mode.
+***************
+*** 4546,4556 ****
+ int visual_active = FALSE;
+ int flags = 0;
+ pos_T save_VIsual;
+- regmmatch_T regmatch;
+- int nmatched = 0;
+ int zerowidth = FALSE;
+
+-
+ /* wrapping should not occur */
+ p_ws = FALSE;
+
+--- 4548,4555 ----
+***************
+*** 4583,4606 ****
+ else
+ orig_pos = pos = start_pos = curwin->w_cursor;
+
+! /*
+! * Check for zero-width pattern.
+! */
+! if (search_regcomp(spats[last_idx].pat, RE_SEARCH, RE_SEARCH,
+! ((SEARCH_HIS + SEARCH_KEEP)), &regmatch) == FAIL)
+ return FAIL;
+
+- /* Zero-width pattern should match somewhere, then we can check if start
+- * and end are in the same position. */
+- nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
+- curwin->w_cursor.lnum, (colnr_T)0, NULL);
+- if (called_emsg)
+- return FAIL;
+- if (nmatched && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
+- && regmatch.endpos[0].col == regmatch.startpos[0].col)
+- zerowidth = TRUE;
+- vim_free(regmatch.regprog);
+-
+ /*
+ * The trick is to first search backwards and then search forward again,
+ * so that a match at the current cursor position will be correctly
+--- 4582,4592 ----
+ else
+ orig_pos = pos = start_pos = curwin->w_cursor;
+
+! /* Is the pattern is zero-width? */
+! zerowidth = is_zerowidth(spats[last_idx].pat);
+! if (zerowidth == -1)
+ return FAIL;
+
+ /*
+ * The trick is to first search backwards and then search forward again,
+ * so that a match at the current cursor position will be correctly
+***************
+*** 4693,4698 ****
+--- 4679,4721 ----
+
+ return OK;
+ }
++
++ /*
++ * Check if the pattern is zero-width.
++ * Returns TRUE, FALSE or -1 for failure.
++ */
++ static int
++ is_zerowidth(pattern)
++ char_u *pattern;
++ {
++ regmmatch_T regmatch;
++ int nmatched = 0;
++ int result = -1;
++ pos_T pos;
++
++ if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH,
++ SEARCH_KEEP, &regmatch) == FAIL)
++ return -1;
++
++ /* move to match */
++ clearpos(&pos);
++ if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1,
++ SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL)
++ {
++ /* Zero-width pattern should match somewhere, then we can check if
++ * start and end are in the same position. */
++ nmatched = vim_regexec_multi(&regmatch, curwin, curbuf,
++ pos.lnum, (colnr_T)0, NULL);
++
++ if (!called_emsg)
++ result = (nmatched != 0
++ && regmatch.startpos[0].lnum == regmatch.endpos[0].lnum
++ && regmatch.startpos[0].col == regmatch.endpos[0].col);
++ }
++
++ vim_free(regmatch.regprog);
++ return result;
++ }
+ #endif /* FEAT_VISUAL */
+
+ #if defined(FEAT_LISP) || defined(FEAT_CINDENT) || defined(FEAT_TEXTOBJ) \
+*** ../vim-7.3.635/src/version.c 2012-08-23 13:28:50.000000000 +0200
+--- src/version.c 2012-08-23 15:25:23.000000000 +0200
+***************
+*** 721,722 ****
+--- 721,724 ----
+ { /* Add new patch number below this line */
++ /**/
++ 636,
+ /**/
+
+--
+Edison's greatest achievement came in 1879, when he invented the
+electric company. Edison's design was a brilliant adaptation of the
+simple electrical circuit: the electric company sends electricity
+through a wire to a customer, then immediately gets the electricity
+back through another wire
+
+ /// 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 ///