aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval/typval.h
diff options
context:
space:
mode:
authorerw7 <erw7.github@gmail.com>2019-08-25 13:45:45 +0900
committererw7 <erw7.github@gmail.com>2019-09-04 13:40:04 +0900
commita2e48b556b7537acd26353b6cc201410be7cf3dc (patch)
tree8608753784910578b9772905f9545bf45c282361 /src/nvim/eval/typval.h
parent38806f23edfcba8cb7f7b80039d268ae3ffb0557 (diff)
downloadrneovim-a2e48b556b7537acd26353b6cc201410be7cf3dc.tar.gz
rneovim-a2e48b556b7537acd26353b6cc201410be7cf3dc.tar.bz2
rneovim-a2e48b556b7537acd26353b6cc201410be7cf3dc.zip
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
Diffstat (limited to 'src/nvim/eval/typval.h')
-rw-r--r--src/nvim/eval/typval.h13
1 files changed, 12 insertions, 1 deletions
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