diff options
author | Bram Moolenaar <Bram@vim.org> | 2010-11-24 15:50:59 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2010-11-24 15:50:59 +0100 |
commit | 4dbbff57baebde02a8bdb26a25947c3964ec6198 (patch) | |
tree | 45a4d5f20e89f23d9e27efb50be5e0510abe5266 /src/ex_docmd.c | |
parent | 0818b87cbf7c0faf681775dae841aae41497758b (diff) | |
download | vim-git-4dbbff57baebde02a8bdb26a25947c3964ec6198.tar.gz |
updated for version 7.3.065v7.3.065
Problem: Can't get current line number in a source file.
Solution: Add the <slnum> item, similar to <sfile>.
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r-- | src/ex_docmd.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c index ee6c29701..0aac8f85c 100644 --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -9538,17 +9538,23 @@ find_cmdline_var(src, usedlen) #define SPEC_CFILE 4 "<sfile>", /* ":so" file name */ #define SPEC_SFILE 5 + "<slnum>", /* ":so" file line number */ +#define SPEC_SLNUM 6 #ifdef FEAT_AUTOCMD "<afile>", /* autocommand file name */ -# define SPEC_AFILE 6 +# define SPEC_AFILE 7 "<abuf>", /* autocommand buffer number */ -# define SPEC_ABUF 7 +# define SPEC_ABUF 8 "<amatch>", /* autocommand match name */ -# define SPEC_AMATCH 8 +# define SPEC_AMATCH 9 #endif #ifdef FEAT_CLIENTSERVER "<client>" -# define SPEC_CLIENT 9 +# ifdef FEAT_AUTOCMD +# define SPEC_CLIENT 10 +# else +# define SPEC_CLIENT 7 +# endif #endif }; @@ -9573,6 +9579,7 @@ find_cmdline_var(src, usedlen) * '<cWORD>' to WORD under the cursor * '<cfile>' to path name under the cursor * '<sfile>' to sourced file name + * '<slnum>' to sourced file line number * '<afile>' to file name for autocommand * '<abuf>' to buffer number for autocommand * '<amatch>' to matching name for autocommand @@ -9604,10 +9611,7 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped) #ifdef FEAT_MODIFY_FNAME int skip_mod = FALSE; #endif - -#if defined(FEAT_AUTOCMD) || defined(FEAT_CLIENTSERVER) char_u strbuf[30]; -#endif *errormsg = NULL; if (escaped != NULL) @@ -9796,6 +9800,15 @@ eval_vars(src, srcstart, usedlen, lnump, errormsg, escaped) return NULL; } break; + case SPEC_SLNUM: /* line in file for ":so" command */ + if (sourcing_name == NULL || sourcing_lnum == 0) + { + *errormsg = (char_u *)_("E842: no line number to use for \"<slnum>\""); + return NULL; + } + sprintf((char *)strbuf, "%ld", (long)sourcing_lnum); + result = strbuf; + break; #if defined(FEAT_CLIENTSERVER) case SPEC_CLIENT: /* Source of last submitted input */ sprintf((char *)strbuf, PRINTF_HEX_LONG_U, |