summaryrefslogtreecommitdiff
path: root/source/ap/vim/patches/7.2.295
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.2.295')
-rw-r--r--source/ap/vim/patches/7.2.295142
1 files changed, 142 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.2.295 b/source/ap/vim/patches/7.2.295
new file mode 100644
index 00000000..331498ff
--- /dev/null
+++ b/source/ap/vim/patches/7.2.295
@@ -0,0 +1,142 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.295
+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.2.295
+Problem: When using map() on a List the index is not known.
+Solution: Set v:key to the index. (Hari Krishna Dara)
+Files: runtime/doc/eval.txt, src/eval.c
+
+
+*** ../vim-7.2.294/runtime/doc/eval.txt 2009-11-11 14:21:48.000000000 +0100
+--- runtime/doc/eval.txt 2009-11-11 18:22:54.000000000 +0100
+***************
+*** 3802,3808 ****
+ Replace each item in {expr} with the result of evaluating
+ {string}.
+ Inside {string} |v:val| has the value of the current item.
+! For a |Dictionary| |v:key| has the key of the current item.
+ Example: >
+ :call map(mylist, '"> " . v:val . " <"')
+ < This puts "> " before and " <" after each item in "mylist".
+--- 3812,3819 ----
+ Replace each item in {expr} with the result of evaluating
+ {string}.
+ Inside {string} |v:val| has the value of the current item.
+! For a |Dictionary| |v:key| has the key of the current item
+! and for a |List| |v:key| has the index of the current item.
+ Example: >
+ :call map(mylist, '"> " . v:val . " <"')
+ < This puts "> " before and " <" after each item in "mylist".
+*** ../vim-7.2.294/src/eval.c 2009-11-11 14:21:48.000000000 +0100
+--- src/eval.c 2009-11-11 18:22:49.000000000 +0100
+***************
+*** 9928,9933 ****
+--- 9928,9934 ----
+ int todo;
+ char_u *ermsg = map ? (char_u *)"map()" : (char_u *)"filter()";
+ int save_did_emsg;
++ int index = 0;
+
+ if (argvars[0].v_type == VAR_LIST)
+ {
+***************
+*** 9961,9969 ****
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
+ if (argvars[0].v_type == VAR_DICT)
+ {
+- prepare_vimvar(VV_KEY, &save_key);
+ vimvars[VV_KEY].vv_type = VAR_STRING;
+
+ ht = &d->dv_hashtab;
+--- 9962,9970 ----
+ save_did_emsg = did_emsg;
+ did_emsg = FALSE;
+
++ prepare_vimvar(VV_KEY, &save_key);
+ if (argvars[0].v_type == VAR_DICT)
+ {
+ vimvars[VV_KEY].vv_type = VAR_STRING;
+
+ ht = &d->dv_hashtab;
+***************
+*** 9987,10010 ****
+ }
+ }
+ hash_unlock(ht);
+-
+- restore_vimvar(VV_KEY, &save_key);
+ }
+ else
+ {
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+ if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
+ if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+ || did_emsg)
+ break;
+ if (!map && rem)
+ listitem_remove(l, li);
+ }
+ }
+
+ restore_vimvar(VV_VAL, &save_val);
+
+ did_emsg |= save_did_emsg;
+--- 9988,10014 ----
+ }
+ }
+ hash_unlock(ht);
+ }
+ else
+ {
++ vimvars[VV_KEY].vv_type = VAR_NUMBER;
++
+ for (li = l->lv_first; li != NULL; li = nli)
+ {
+ if (tv_check_lock(li->li_tv.v_lock, ermsg))
+ break;
+ nli = li->li_next;
++ vimvars[VV_KEY].vv_nr = index;
+ if (filter_map_one(&li->li_tv, expr, map, &rem) == FAIL
+ || did_emsg)
+ break;
+ if (!map && rem)
+ listitem_remove(l, li);
++ ++index;
+ }
+ }
+
++ restore_vimvar(VV_KEY, &save_key);
+ restore_vimvar(VV_VAL, &save_val);
+
+ did_emsg |= save_did_emsg;
+*** ../vim-7.2.294/src/version.c 2009-11-17 12:08:48.000000000 +0100
+--- src/version.c 2009-11-17 12:18:08.000000000 +0100
+***************
+*** 683,684 ****
+--- 683,686 ----
+ { /* Add new patch number below this line */
++ /**/
++ 295,
+ /**/
+
+--
+ARTHUR: You are indeed brave Sir knight, but the fight is mine.
+BLACK KNIGHT: Had enough?
+ARTHUR: You stupid bastard. You havn't got any arms left.
+ "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
+
+ /// 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 ///