summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.461
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.461
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.461')
-rw-r--r--source/ap/vim/patches/7.3.461243
1 files changed, 243 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.461 b/source/ap/vim/patches/7.3.461
new file mode 100644
index 000000000..53c83c061
--- /dev/null
+++ b/source/ap/vim/patches/7.3.461
@@ -0,0 +1,243 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 7.3.461
+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.461
+Problem: The InsertCharPre autocommand event is not triggered during
+ completion and when typing several characters quickly.
+Solution: Also trigger InsertCharPre during completion. Do not read ahead
+ when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto)
+Files: src/edit.c, src/fileio.c, src/proto/fileio.pro
+
+
+*** ../vim-7.3.460/src/edit.c 2012-02-04 23:34:57.000000000 +0100
+--- src/edit.c 2012-02-29 18:17:31.000000000 +0100
+***************
+*** 259,264 ****
+--- 259,267 ----
+ static void ins_try_si __ARGS((int c));
+ #endif
+ static colnr_T get_nolist_virtcol __ARGS((void));
++ #ifdef FEAT_AUTOCMD
++ static char_u *do_insert_char_pre __ARGS((int c));
++ #endif
+
+ static colnr_T Insstart_textlen; /* length of line when insert started */
+ static colnr_T Insstart_blank_vcol; /* vcol for first inserted blank */
+***************
+*** 784,790 ****
+ * completion: Add to "compl_leader". */
+ if (ins_compl_accept_char(c))
+ {
+! ins_compl_addleader(c);
+ continue;
+ }
+
+--- 787,806 ----
+ * completion: Add to "compl_leader". */
+ if (ins_compl_accept_char(c))
+ {
+! #ifdef FEAT_AUTOCMD
+! /* Trigger InsertCharPre. */
+! char_u *str = do_insert_char_pre(c);
+! char_u *p;
+!
+! if (str != NULL)
+! {
+! for (p = str; *p != NUL; mb_ptr_adv(p))
+! ins_compl_addleader(PTR2CHAR(p));
+! vim_free(str);
+! }
+! else
+! #endif
+! ins_compl_addleader(c);
+ continue;
+ }
+
+***************
+*** 1393,1426 ****
+ #ifdef FEAT_AUTOCMD
+ if (!p_paste)
+ {
+! /* Trigger the InsertCharPre event. Lock the text to avoid
+! * weird things from happening. */
+! set_vim_var_char(c);
+! ++textlock;
+! if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL,
+! FALSE, curbuf))
+! {
+! /* Get the new value of v:char. If it is more than one
+! * character insert it literally. */
+! char_u *s = get_vim_var_str(VV_CHAR);
+! if (MB_CHARLEN(s) > 1)
+ {
+! if (stop_arrow() != FAIL)
+ {
+! ins_str(s);
+! AppendToRedobuffLit(s, -1);
+ }
+! c = NUL;
+ }
+! else
+! c = PTR2CHAR(s);
+ }
+
+! set_vim_var_string(VV_CHAR, NULL, -1);
+! --textlock;
+!
+! /* If the new value is an empty string then don't insert a
+! * char. */
+ if (c == NUL)
+ break;
+ }
+--- 1409,1439 ----
+ #ifdef FEAT_AUTOCMD
+ if (!p_paste)
+ {
+! /* Trigger InsertCharPre. */
+! char_u *str = do_insert_char_pre(c);
+! char_u *p;
+!
+! if (str != NULL)
+! {
+! if (*str != NUL && stop_arrow() != FAIL)
+ {
+! /* Insert the new value of v:char literally. */
+! for (p = str; *p != NUL; mb_ptr_adv(p))
+ {
+! c = PTR2CHAR(p);
+! if (c == CAR || c == K_KENTER || c == NL)
+! ins_eol(c);
+! else
+! ins_char(c);
+ }
+! AppendToRedobuffLit(str, -1);
+ }
+! vim_free(str);
+! c = NUL;
+ }
+
+! /* If the new value is already inserted or an empty string
+! * then don't insert any character. */
+ if (c == NUL)
+ break;
+ }
+***************
+*** 5883,5888 ****
+--- 5896,5903 ----
+ * Don't do this when 'cindent' or 'indentexpr' is set, because we might
+ * need to re-indent at a ':', or any other character (but not what
+ * 'paste' is set)..
++ * Don't do this when there an InsertCharPre autocommand is defined,
++ * because we need to fire the event for every character.
+ */
+ #ifdef USE_ON_FLY_SCROLL
+ dont_scroll = FALSE; /* allow scrolling here */
+***************
+*** 5900,5905 ****
+--- 5915,5923 ----
+ #ifdef FEAT_RIGHTLEFT
+ && !p_ri
+ #endif
++ #ifdef FEAT_AUTOCMD
++ && !has_insertcharpre()
++ #endif
+ )
+ {
+ #define INPUT_BUFLEN 100
+***************
+*** 10068,10070 ****
+--- 10086,10123 ----
+ validate_virtcol();
+ return curwin->w_virtcol;
+ }
++
++ #ifdef FEAT_AUTOCMD
++ /*
++ * Handle the InsertCharPre autocommand.
++ * "c" is the character that was typed.
++ * Return a pointer to allocated memory with the replacement string.
++ * Return NULL to continue inserting "c".
++ */
++ static char_u *
++ do_insert_char_pre(c)
++ int c;
++ {
++ char_u *res;
++
++ /* Return quickly when there is nothing to do. */
++ if (!has_insertcharpre())
++ return NULL;
++
++ /* Lock the text to avoid weird things from happening. */
++ ++textlock;
++ set_vim_var_char(c); /* set v:char */
++
++ if (apply_autocmds(EVENT_INSERTCHARPRE, NULL, NULL, FALSE, curbuf))
++ /* Get the new value of v:char. It may be empty or more than one
++ * character. */
++ res = vim_strsave(get_vim_var_str(VV_CHAR));
++ else
++ res = NULL;
++
++ set_vim_var_string(VV_CHAR, NULL, -1); /* clear v:char */
++ --textlock;
++
++ return res;
++ }
++ #endif
+*** ../vim-7.3.460/src/fileio.c 2012-02-12 20:13:55.000000000 +0100
+--- src/fileio.c 2012-02-29 17:50:32.000000000 +0100
+***************
+*** 9116,9121 ****
+--- 9116,9130 ----
+ return (first_autopat[(int)EVENT_CURSORMOVEDI] != NULL);
+ }
+
++ /*
++ * Return TRUE when there is an InsertCharPre autocommand defined.
++ */
++ int
++ has_insertcharpre()
++ {
++ return (first_autopat[(int)EVENT_INSERTCHARPRE] != NULL);
++ }
++
+ static int
+ apply_autocmds_group(event, fname, fname_io, force, group, buf, eap)
+ event_T event;
+*** ../vim-7.3.460/src/proto/fileio.pro 2012-02-12 20:13:55.000000000 +0100
+--- src/proto/fileio.pro 2012-02-29 17:50:38.000000000 +0100
+***************
+*** 44,49 ****
+--- 44,50 ----
+ int trigger_cursorhold __ARGS((void));
+ int has_cursormoved __ARGS((void));
+ int has_cursormovedI __ARGS((void));
++ int has_insertcharpre __ARGS((void));
+ void block_autocmds __ARGS((void));
+ void unblock_autocmds __ARGS((void));
+ int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
+*** ../vim-7.3.460/src/version.c 2012-02-29 16:56:35.000000000 +0100
+--- src/version.c 2012-02-29 18:15:34.000000000 +0100
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 461,
+ /**/
+
+--
+"Computers in the future may weigh no more than 1.5 tons."
+ Popular Mechanics, 1949
+
+ /// 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 ///