From a2e48b556b7537acd26353b6cc201410be7cf3dc Mon Sep 17 00:00:00 2001 From: erw7 Date: Sun, 25 Aug 2019 13:45:45 +0900 Subject: vim-patch:8.1.0362: cannot get the script line number when executing a function Problem: Cannot get the script line number when executing a function. Solution: Store the line number besides the script ID. (Ozaki Kiichi, closes vim/vim#3362) Also display the line number with ":verbose set". https://github.com/vim/vim/commit/f29c1c6aa3f365c025890fab5fb9efbe88eb1761 --- src/nvim/eval/typval.h | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/nvim/eval/typval.h') diff --git a/src/nvim/eval/typval.h b/src/nvim/eval/typval.h index 5c0f872b38..c40585443e 100644 --- a/src/nvim/eval/typval.h +++ b/src/nvim/eval/typval.h @@ -248,6 +248,17 @@ typedef int scid_T; /// Format argument for scid_T #define PRIdSCID "d" +// SCript ConteXt (SCTX): identifies a script script line. +// When sourcing a script "sc_lnum" is zero, "sourcing_lnum" is the current +// line number. When executing a user function "sc_lnum" is the line where the +// function was defined, "sourcing_lnum" is the line number inside the +// function. When stored with a function, mapping, option, etc. "sc_lnum" is +// the line number in the script "sc_sid". +typedef struct { + scid_T sc_sid; // script ID + linenr_T sc_lnum; // line number +} sctx_T; + // Structure to hold info for a function that is currently being executed. typedef struct funccall_S funccall_T; @@ -275,7 +286,7 @@ struct ufunc { proftime_T uf_tml_wait; ///< start wait time for current line int uf_tml_idx; ///< index of line being timed; -1 if none int uf_tml_execed; ///< line being timed was executed - scid_T uf_script_ID; ///< ID of script where function was defined, + sctx_T uf_script_ctx; ///< SCTX where function was defined, ///< used for s: variables int uf_refcount; ///< reference count, see func_name_refcount() funccall_T *uf_scoped; ///< l: local variables for closure -- cgit From 9db60b06a1d9b50b3ba6beb858eb0fd2c58571c4 Mon Sep 17 00:00:00 2001 From: erw7 Date: Thu, 29 Aug 2019 13:07:03 +0900 Subject: vim-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. https://github.com/vim/vim/commit/ded5f1bed7ff2d138b3ee0f9610d17290b62692d --- src/nvim/eval/typval.h | 1 + 1 file changed, 1 insertion(+) (limited to 'src/nvim/eval/typval.h') diff --git a/src/nvim/eval/typval.h b/src/nvim/eval/typval.h index c40585443e..823367560a 100644 --- a/src/nvim/eval/typval.h +++ b/src/nvim/eval/typval.h @@ -256,6 +256,7 @@ typedef int scid_T; // the line number in the script "sc_sid". typedef struct { scid_T sc_sid; // script ID + int sc_seq; // sourcing sequence number linenr_T sc_lnum; // line number } sctx_T; -- cgit