aboutsummaryrefslogtreecommitdiff
path: root/src/eval.c
diff options
context:
space:
mode:
authorMarco Hinz <mh.codebro@gmail.com>2014-04-29 16:55:27 +0200
committerThiago de Arruda <tpadilha84@gmail.com>2014-04-29 15:14:25 -0300
commit046debb9359c85e2f2bc5c6d9481dac0025c6a80 (patch)
tree32dd1a0846edcbbb8a8ba005dce023577f6b17e8 /src/eval.c
parentf30a83f10120320ea7c2aa1d480fcdb673aa0323 (diff)
downloadrneovim-046debb9359c85e2f2bc5c6d9481dac0025c6a80.tar.gz
rneovim-046debb9359c85e2f2bc5c6d9481dac0025c6a80.tar.bz2
rneovim-046debb9359c85e2f2bc5c6d9481dac0025c6a80.zip
vim-patch:7.4.268
Problem: Using exists() on a funcref for a script-local function does not work. Solution: Translate <SNR> to the special byte sequence. Add a test. https://code.google.com/p/vim/source/detail?r=1a5ed2626b26a982e307a206572121a557adf709
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/eval.c b/src/eval.c
index a4727127f6..93d33a2c96 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -17883,6 +17883,13 @@ trans_function_name (
if (name != NULL) {
name = vim_strsave(name);
*pp = end;
+ if (strncmp((char *)name, "<SNR>", 5) == 0) {
+ // Change "<SNR>" to the byte sequence.
+ name[0] = K_SPECIAL;
+ name[1] = KS_EXTRA;
+ name[2] = (int)KE_SNR;
+ memmove(name + 3, name + 5, strlen((char *)name + 5) + 1);
+ }
goto theend;
}