| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.1068 |
| 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.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 |
| |
| |
| |
| |
| |
| *** 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 */ |
| |
| |
| |
| *** 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); |
| } |
| |
| |
| |
| *** 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 ---- |
| |
| |
| |
| *** 889,895 **** |
| >> FunctionConstructor |
| vim.Function("123"):(<type 'exceptions.ValueError'>, ValueError('unnamed function does not exist',)) |
| vim.Function("xxx_non_existent_function_xxx"):(<type 'exceptions.ValueError'>, ValueError('function does not exist',)) |
| ! vim.Function("xxx#non#existent#function#xxx"):(<type 'exceptions.ValueError'>, ValueError('function does not exist',)) |
| >> FunctionCall |
| >>> Testing StringToChars using f({%s : 1}) |
| f({1 : 1}):(<type 'exceptions.TypeError'>, TypeError('object must be string',)) |
| --- 889,895 ---- |
| >> FunctionConstructor |
| vim.Function("123"):(<type 'exceptions.ValueError'>, ValueError('unnamed function does not exist',)) |
| vim.Function("xxx_non_existent_function_xxx"):(<type 'exceptions.ValueError'>, ValueError('function does not exist',)) |
| ! vim.Function("xxx#non#existent#function#xxx"):NOT FAILED |
| >> FunctionCall |
| >>> Testing StringToChars using f({%s : 1}) |
| f({1 : 1}):(<type 'exceptions.TypeError'>, TypeError('object must be string',)) |
| |
| |
| |
| *** 878,884 **** |
| >> FunctionConstructor |
| vim.Function("123"):(<class 'ValueError'>, ValueError('unnamed function does not exist',)) |
| vim.Function("xxx_non_existent_function_xxx"):(<class 'ValueError'>, ValueError('function does not exist',)) |
| ! vim.Function("xxx#non#existent#function#xxx"):(<class 'ValueError'>, ValueError('function does not exist',)) |
| >> FunctionCall |
| >>> Testing StringToChars using f({%s : 1}) |
| f({1 : 1}):(<class 'TypeError'>, TypeError('object must be string',)) |
| --- 878,884 ---- |
| >> FunctionConstructor |
| vim.Function("123"):(<class 'ValueError'>, ValueError('unnamed function does not exist',)) |
| vim.Function("xxx_non_existent_function_xxx"):(<class 'ValueError'>, ValueError('function does not exist',)) |
| ! vim.Function("xxx#non#existent#function#xxx"):NOT FAILED |
| >> FunctionCall |
| >>> Testing StringToChars using f({%s : 1}) |
| f({1 : 1}):(<class 'TypeError'>, TypeError('object must be string',)) |
| |
| |
| |
| *** 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 */ |
| |
| |
| |
| *** 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 /// |