Mercurial > vim
diff src/userfunc.c @ 15008:67e3103d6e18 v8.1.0515
patch 8.1.0515: reloading a script gives errors for existing functions
commit https://github.com/vim/vim/commit/ded5f1bed7ff2d138b3ee0f9610d17290b62692d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 10 17:33:29 2018 +0100
patch 8.1.0515: reloading a script gives errors for existing functions
Problem: Reloading a script gives errors for existing functions.
Solution: Allow redefining a function once when reloading a script.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 10 Nov 2018 17:45:06 +0100 |
parents | 32787e326de2 |
children | 9df130fd5e0d |
line wrap: on
line diff
--- a/src/userfunc.c +++ b/src/userfunc.c @@ -2330,14 +2330,19 @@ ex_function(exarg_T *eap) fp = find_func(name); if (fp != NULL) { - if (!eap->forceit) + // 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"), + emsg_funcname( + N_("E127: Cannot redefine function %s: It is in use"), name); goto erret; }