Ozaki Kiichi wrote:
> This pull-req proposes storing the script line number with script ID.
>
> ## Purpose
>
> 1. Get the current script line number in any position.
>
> We can get the script line number (by `expand('<slnum>')`), but this returns
> lnum based on the top of current function, except while doing `:source`.
> This patch adds new key `<flnum>` to `expand()`, `expand('<flnum>')` shows
> the current line number.
>
> 2. Get the line number:
>
> * where option is set
> * where function/map/command/autocmd is defined
>
> Vim saves the script ID for each items, but no line number.
> This patch can provide more details, the line number information, to user.
>
> ## Details
>
> Replacing "scriptID" field of each struct by `sctx_T` (means Script ConTeXt) :
>
> ```c
> typedef struct {
> scid_T sc_scid; // script ID
> linenr_T sc_lnum; // script line number
> } sctx_T;
> ```
>
> And add `current_sctx` to save the current context:
>
> * Redefine `current_SID` as the macro of `current_sctx.sc_scid`
> * Define `current_SLN` as the macro of `current_sctx.sc_lnum`
>
> Thus, by loading `sc_lnum` of context item into `current_SLN`, `current_SLN +
> sourcing_lnum` means the current script line number. `expand('<flnum>')`
> returns it.
>
> ## Application examples
>
> ### Better profiling
>
> By @blueyed.
> #3286
> https://github.com/blueyed/vim/commit/6f9e14aa2e61cb271d654331dc1e11eee4dabd09
>
>
> ### Detailed information for items
>
> By @ujihisa.
>
> * Make `:verbose ...` show the line number
>
> ```diff
> --- a/src/eval.c
> +++ b/src/eval.c
> @@ -8742,6 +8742,13 @@ last_set_msg(sctx_T sctx)
> MSG_PUTS(_("\n\tLast set from "));
> MSG_PUTS(p);
> vim_free(p);
> + if (sctx.sc_lnum > 0)
> + {
> + char_u s[21];
> +
> + vim_snprintf((char *)s, sizeof(s), ":%ld", sctx.sc_lnum);
> + MSG_PUTS(s);
> + }
> verbose_leave();
> }
> }
> ```
>
> `vim --clean`
>
> present:
> ```
> :verbose map
> Q gq
> Last set from /usr/local/share/vim/vim81/defaults.vim
> ```
>
> patched:
> ```
> :verbose map
> Q gq
> Last set from /usr/local/share/vim/vim81/defaults.vim:69
> ```
>
> **NOTE** No test and doc yet.
Thanks for doing this. Generally looks good.
Using sctx_T looks OK, but changing "script_ID" to "sctx" is a bit
cryptic. How about using "script_ctx"?
--
|
Ceci n'est pas une pipe.
/// Bram Moolenaar -- [email protected] -- 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 ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.