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 ///