diff --git a/7.3.1068 b/7.3.1068 new file mode 100644 index 0000000..b796776 --- /dev/null +++ b/7.3.1068 @@ -0,0 +1,173 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.1068 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.1068 +Problem: Python: Script is auto-loaded on function creation. +Solution: Python patch 27. (ZyX) +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro, + src/testdir/test86.ok, src/testdir/test87.ok, src/vim.h + + +*** ../vim-7.3.1067/src/eval.c 2013-05-30 13:14:06.000000000 +0200 +--- src/eval.c 2013-05-30 13:35:15.000000000 +0200 +*************** +*** 810,815 **** +--- 810,816 ---- + # endif + prof_self_cmp __ARGS((const void *s1, const void *s2)); + #endif ++ static int script_autoload __ARGS((char_u *name, int reload)); + static char_u *autoload_name __ARGS((char_u *name)); + static void cat_func_name __ARGS((char_u *buf, ufunc_T *fp)); + static void func_free __ARGS((ufunc_T *fp)); +*************** +*** 829,838 **** + static void sortFunctions __ARGS(()); + #endif + +- +- /* Character used as separated in autoload function/variable names. */ +- #define AUTOLOAD_CHAR '#' +- + /* + * Initialize the global and v: variables. + */ +--- 830,835 ---- +*************** +*** 22190,22196 **** + * If "name" has a package name try autoloading the script for it. + * Return TRUE if a package was loaded. + */ +! int + script_autoload(name, reload) + char_u *name; + int reload; /* load script again when already loaded */ +--- 22187,22193 ---- + * If "name" has a package name try autoloading the script for it. + * Return TRUE if a package was loaded. + */ +! static int + script_autoload(name, reload) + char_u *name; + int reload; /* load script again when already loaded */ +*** ../vim-7.3.1067/src/if_py_both.h 2013-05-30 13:22:07.000000000 +0200 +--- src/if_py_both.h 2013-05-30 13:35:15.000000000 +0200 +*************** +*** 2015,2033 **** + func_ref(self->name); + } + else +! { +! self->name = get_expanded_name(name, TRUE); +! if (self->name == NULL) + { +! if (script_autoload(name, TRUE) && !aborting()) +! self->name = get_expanded_name(name, TRUE); +! if (self->name == NULL) +! { +! PyErr_SetString(PyExc_ValueError, _("function does not exist")); +! return NULL; +! } + } +- } + + return (PyObject *)(self); + } +--- 2015,2027 ---- + func_ref(self->name); + } + else +! if ((self->name = get_expanded_name(name, +! vim_strchr(name, AUTOLOAD_CHAR) == NULL)) +! == NULL) + { +! PyErr_SetString(PyExc_ValueError, _("function does not exist")); +! return NULL; + } + + return (PyObject *)(self); + } +*** ../vim-7.3.1067/src/proto/eval.pro 2013-05-30 13:14:06.000000000 +0200 +--- src/proto/eval.pro 2013-05-30 13:35:15.000000000 +0200 +*************** +*** 132,136 **** + void ex_oldfiles __ARGS((exarg_T *eap)); + int modify_fname __ARGS((char_u *src, int *usedlen, char_u **fnamep, char_u **bufp, int *fnamelen)); + char_u *do_string_sub __ARGS((char_u *str, char_u *pat, char_u *sub, char_u *flags)); +- int script_autoload __ARGS((char_u *name, int reload)); + /* vim: set ft=c : */ +--- 132,135 ---- +*** ../vim-7.3.1067/src/testdir/test86.ok 2013-05-30 13:28:37.000000000 +0200 +--- src/testdir/test86.ok 2013-05-30 13:35:15.000000000 +0200 +*************** +*** 889,895 **** + >> FunctionConstructor + vim.Function("123"):(, ValueError('unnamed function does not exist',)) + vim.Function("xxx_non_existent_function_xxx"):(, ValueError('function does not exist',)) +! vim.Function("xxx#non#existent#function#xxx"):(, ValueError('function does not exist',)) + >> FunctionCall + >>> Testing StringToChars using f({%s : 1}) + f({1 : 1}):(, TypeError('object must be string',)) +--- 889,895 ---- + >> FunctionConstructor + vim.Function("123"):(, ValueError('unnamed function does not exist',)) + vim.Function("xxx_non_existent_function_xxx"):(, ValueError('function does not exist',)) +! vim.Function("xxx#non#existent#function#xxx"):NOT FAILED + >> FunctionCall + >>> Testing StringToChars using f({%s : 1}) + f({1 : 1}):(, TypeError('object must be string',)) +*** ../vim-7.3.1067/src/testdir/test87.ok 2013-05-30 13:28:37.000000000 +0200 +--- src/testdir/test87.ok 2013-05-30 13:35:15.000000000 +0200 +*************** +*** 878,884 **** + >> FunctionConstructor + vim.Function("123"):(, ValueError('unnamed function does not exist',)) + vim.Function("xxx_non_existent_function_xxx"):(, ValueError('function does not exist',)) +! vim.Function("xxx#non#existent#function#xxx"):(, ValueError('function does not exist',)) + >> FunctionCall + >>> Testing StringToChars using f({%s : 1}) + f({1 : 1}):(, TypeError('object must be string',)) +--- 878,884 ---- + >> FunctionConstructor + vim.Function("123"):(, ValueError('unnamed function does not exist',)) + vim.Function("xxx_non_existent_function_xxx"):(, ValueError('function does not exist',)) +! vim.Function("xxx#non#existent#function#xxx"):NOT FAILED + >> FunctionCall + >>> Testing StringToChars using f({%s : 1}) + f({1 : 1}):(, TypeError('object must be string',)) +*** ../vim-7.3.1067/src/vim.h 2013-05-06 03:52:44.000000000 +0200 +--- src/vim.h 2013-05-30 13:35:15.000000000 +0200 +*************** +*** 2243,2246 **** +--- 2243,2249 ---- + #define SREQ_WIN 1 /* Request window-local option */ + #define SREQ_BUF 2 /* Request buffer-local option */ + ++ /* Character used as separated in autoload function/variable names. */ ++ #define AUTOLOAD_CHAR '#' ++ + #endif /* VIM__H */ +*** ../vim-7.3.1067/src/version.c 2013-05-30 13:32:26.000000000 +0200 +--- src/version.c 2013-05-30 13:34:44.000000000 +0200 +*************** +*** 730,731 **** +--- 730,733 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1068, + /**/ + +-- +How To Keep A Healthy Level Of Insanity: +10. Ask people what sex they are. Laugh hysterically after they answer. + + /// 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 ///