diff options
Diffstat (limited to 'data/vim/patches/8.1.0515')
-rw-r--r-- | data/vim/patches/8.1.0515 | 265 |
1 files changed, 0 insertions, 265 deletions
diff --git a/data/vim/patches/8.1.0515 b/data/vim/patches/8.1.0515 deleted file mode 100644 index 89d85ffac..000000000 --- a/data/vim/patches/8.1.0515 +++ /dev/null @@ -1,265 +0,0 @@ -To: vim_dev@googlegroups.com -Subject: Patch 8.1.0515 -Fcc: outbox -From: Bram Moolenaar <Bram@moolenaar.net> -Mime-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit ------------- - -Patch 8.1.0515 -Problem: Reloading a script gives errors for existing functions. -Solution: Allow redefining a function once when reloading a script. -Files: src/testdir/test_functions.vim, src/userfunc.c, src/structs.h, - src/globals.h, src/buffer.c, src/ex_cmds2.c, src/main.c, - src/option.c, runtime/doc/eval.txt - - -*** ../vim-8.1.0514/src/testdir/test_functions.vim 2018-11-04 23:39:33.953644902 +0100 ---- src/testdir/test_functions.vim 2018-11-10 16:54:47.043813092 +0100 -*************** -*** 1138,1140 **** ---- 1138,1167 ---- - call delete('Xfuncrange2') - bwipe! - endfunc -+ -+ func Test_func_exists_on_reload() -+ call writefile(['func ExistingFunction()', 'echo "yes"', 'endfunc'], 'Xfuncexists') -+ call assert_equal(0, exists('*ExistingFunction')) -+ source Xfuncexists -+ call assert_equal(1, exists('*ExistingFunction')) -+ " Redefining a function when reloading a script is OK. -+ source Xfuncexists -+ call assert_equal(1, exists('*ExistingFunction')) -+ -+ " But redefining in another script is not OK. -+ call writefile(['func ExistingFunction()', 'echo "yes"', 'endfunc'], 'Xfuncexists2') -+ call assert_fails('source Xfuncexists2', 'E122:') -+ -+ delfunc ExistingFunction -+ call assert_equal(0, exists('*ExistingFunction')) -+ call writefile([ -+ \ 'func ExistingFunction()', 'echo "yes"', 'endfunc', -+ \ 'func ExistingFunction()', 'echo "no"', 'endfunc', -+ \ ], 'Xfuncexists') -+ call assert_fails('source Xfuncexists', 'E122:') -+ call assert_equal(1, exists('*ExistingFunction')) -+ -+ call delete('Xfuncexists2') -+ call delete('Xfuncexists') -+ delfunc ExistingFunction -+ endfunc -*** ../vim-8.1.0514/src/userfunc.c 2018-11-04 23:39:33.953644902 +0100 ---- src/userfunc.c 2018-11-10 16:48:35.046279419 +0100 -*************** -*** 2330,2343 **** - fp = find_func(name); - if (fp != NULL) - { -! if (!eap->forceit) - { - emsg_funcname(e_funcexts, name); - goto erret; - } - if (fp->uf_calls > 0) - { -! emsg_funcname(N_("E127: Cannot redefine function %s: It is in use"), - name); - goto erret; - } ---- 2330,2348 ---- - fp = find_func(name); - if (fp != NULL) - { -! // Function can be replaced with "function!" and when sourcing the -! // same script again, but only once. -! if (!eap->forceit -! && (fp->uf_script_ctx.sc_sid != current_sctx.sc_sid -! || fp->uf_script_ctx.sc_seq == current_sctx.sc_seq)) - { - emsg_funcname(e_funcexts, name); - goto erret; - } - if (fp->uf_calls > 0) - { -! emsg_funcname( -! N_("E127: Cannot redefine function %s: It is in use"), - name); - goto erret; - } -*** ../vim-8.1.0514/src/structs.h 2018-10-19 22:35:04.889189955 +0200 ---- src/structs.h 2018-11-10 16:33:16.847566578 +0100 -*************** -*** 84,89 **** ---- 84,90 ---- - */ - typedef struct { - scid_T sc_sid; // script ID -+ int sc_seq; // sourcing sequence number - linenr_T sc_lnum; // line number - } sctx_T; - -*** ../vim-8.1.0514/src/globals.h 2018-09-13 15:33:39.609712174 +0200 ---- src/globals.h 2018-11-10 16:33:30.455464981 +0100 -*************** -*** 326,332 **** - EXTERN int garbage_collect_at_exit INIT(= FALSE); - - // Script CTX being sourced or was sourced to define the current function. -! EXTERN sctx_T current_sctx INIT(= {0 COMMA 0}); - #endif - - EXTERN int did_source_packages INIT(= FALSE); ---- 326,332 ---- - EXTERN int garbage_collect_at_exit INIT(= FALSE); - - // Script CTX being sourced or was sourced to define the current function. -! EXTERN sctx_T current_sctx INIT(= {0 COMMA 0 COMMA 0}); - #endif - - EXTERN int did_source_packages INIT(= FALSE); -*** ../vim-8.1.0514/src/buffer.c 2018-10-11 19:27:43.916066156 +0200 ---- src/buffer.c 2018-11-10 16:34:17.031116881 +0100 -*************** -*** 5519,5524 **** ---- 5519,5525 ---- - #ifdef FEAT_EVAL - save_current_sctx = current_sctx; - current_sctx.sc_sid = SID_MODELINE; -+ current_sctx.sc_seq = 0; - current_sctx.sc_lnum = 0; - #endif - retval = do_set(s, OPT_MODELINE | OPT_LOCAL | flags); -*** ../vim-8.1.0514/src/ex_cmds2.c 2018-11-05 20:25:48.804089622 +0100 ---- src/ex_cmds2.c 2018-11-10 16:39:27.217457068 +0100 -*************** -*** 4344,4349 **** ---- 4344,4350 ---- - #ifdef FEAT_EVAL - sctx_T save_current_sctx; - static scid_T last_current_SID = 0; -+ static int last_current_SID_seq = 0; - funccal_entry_T funccalp_entry; - int save_debug_break_level = debug_break_level; - scriptitem_T *si = NULL; -*************** -*** 4508,4518 **** - * Also starts profiling timer for nested script. */ - save_funccal(&funccalp_entry); - -! /* -! * Check if this script was sourced before to finds its SID. -! * If it's new, generate a new SID. -! */ - save_current_sctx = current_sctx; - current_sctx.sc_lnum = 0; - # ifdef UNIX - stat_ok = (mch_stat((char *)fname_exp, &st) >= 0); ---- 4509,4519 ---- - * Also starts profiling timer for nested script. */ - save_funccal(&funccalp_entry); - -! // Check if this script was sourced before to finds its SID. -! // If it's new, generate a new SID. -! // Always use a new sequence number. - save_current_sctx = current_sctx; -+ current_sctx.sc_seq = ++last_current_SID_seq; - current_sctx.sc_lnum = 0; - # ifdef UNIX - stat_ok = (mch_stat((char *)fname_exp, &st) >= 0); -*** ../vim-8.1.0514/src/main.c 2018-10-14 21:40:57.356848425 +0200 ---- src/main.c 2018-11-10 16:42:21.260538735 +0100 -*************** -*** 2953,2958 **** ---- 2953,2959 ---- - sourcing_name = (char_u *)"command line"; - #ifdef FEAT_EVAL - current_sctx.sc_sid = SID_CARG; -+ current_sctx.sc_seq = 0; - #endif - for (i = 0; i < parmp->n_commands; ++i) - { -*************** -*** 3183,3188 **** ---- 3184,3190 ---- - #ifdef FEAT_EVAL - save_current_sctx = current_sctx; - current_sctx.sc_sid = SID_ENV; -+ current_sctx.sc_seq = 0; - current_sctx.sc_lnum = 0; - #endif - do_cmdline_cmd(initstr); -*** ../vim-8.1.0514/src/option.c 2018-11-04 14:40:42.347139567 +0100 ---- src/option.c 2018-11-10 16:48:26.810332143 +0100 -*************** -*** 415,421 **** - char_u *def_val[2]; // default values for variable (vi and vim) - #ifdef FEAT_EVAL - sctx_T script_ctx; // script context where the option was last set -! # define SCTX_INIT , {0, 0} - #else - # define SCTX_INIT - #endif ---- 415,421 ---- - char_u *def_val[2]; // default values for variable (vi and vim) - #ifdef FEAT_EVAL - sctx_T script_ctx; // script context where the option was last set -! # define SCTX_INIT , {0, 0, 0} - #else - # define SCTX_INIT - #endif -*************** -*** 5959,5964 **** ---- 5959,5965 ---- - else - { - script_ctx.sc_sid = set_sid; -+ script_ctx.sc_seq = 0; - script_ctx.sc_lnum = 0; - } - set_option_sctx_idx(idx, opt_flags, script_ctx); -*** ../vim-8.1.0514/runtime/doc/eval.txt 2018-10-25 12:30:52.270659874 +0200 ---- runtime/doc/eval.txt 2018-11-10 16:52:02.836919520 +0100 -*************** -*** 9658,9666 **** - deleted if there are no more references to it. - *E127* *E122* - When a function by this name already exists and [!] is -! not used an error message is given. When [!] is used, -! an existing function is silently replaced. Unless it -! is currently being executed, that is an error. - NOTE: Use ! wisely. If used without care it can cause - an existing function to be replaced unexpectedly, - which is hard to debug. ---- 9673,9685 ---- - deleted if there are no more references to it. - *E127* *E122* - When a function by this name already exists and [!] is -! not used an error message is given. There is one -! exception: When sourcing a script again, a function -! that was previously defined in that script will be -! silently replaced. -! When [!] is used, an existing function is silently -! replaced. Unless it is currently being executed, that -! is an error. - NOTE: Use ! wisely. If used without care it can cause - an existing function to be replaced unexpectedly, - which is hard to debug. -*** ../vim-8.1.0514/src/version.c 2018-11-10 16:01:23.335381858 +0100 ---- src/version.c 2018-11-10 16:26:16.190674882 +0100 -*************** -*** 794,795 **** ---- 794,797 ---- - { /* Add new patch number below this line */ -+ /**/ -+ 515, - /**/ - --- -Witches prefer brooms: vacuum-cleaners need extension cords! - - /// 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 /// |