To:
[email protected]
Subject: Patch 5.6a.007
Fcc: outbox
From: Bram Moolenaar <
[email protected]>
------------
Patch 5.6a.007
Problem: ":let" didn't show internal Vim variables. (Ron Aaron)
Solution: Do show ":v" variables for ":let" and ":let v:name".
Files: src/eval.c
*** ../vim-5.6a.6/src/eval.c Tue Dec 21 13:01:11 1999
--- src/eval.c Wed Dec 22 10:37:53 1999
***************
*** 229,234 ****
--- 229,236 ----
static struct growarray *find_var_ga __ARGS((char_u *name, char_u **varname));
static void var_free_one __ARGS((VAR v));
static void list_one_var __ARGS((VAR v, char_u *prefix));
+ static void list_vim_var __ARGS((int i));
+ static void list_one_var_a __ARGS((char_u *prefix, char_u *name, int type, char_u *string));
static void set_var __ARGS((char_u *name, VAR varp));
static char_u *find_option_end __ARGS((char_u *p));
static void list_func_head __ARGS((struct ufunc *fp));
***************
*** 353,358 ****
--- 355,363 ----
for (i = 0; i < curwin->w_vars.ga_len; ++i)
if (WVAR_ENTRY(i).var_name != NULL)
list_one_var(&WVAR_ENTRY(i), (char_u *)"w:");
+ for (i = 0; i < VV_LEN; ++i)
+ if (vimvars[i].type == VAR_NUMBER || vimvars[i].val != NULL)
+ list_vim_var(i);
}
}
else
***************
*** 373,400 ****
{
c1 = *p;
*p = NUL;
! varp = find_var(arg, FALSE);
! if (varp == NULL)
! EMSG2("Unknown variable: \"%s\"", arg);
else
{
! name = vim_strchr(arg, ':');
! if (name != NULL)
{
! /* "a:" vars have no name stored, use whole arg */
! if (arg[0] == 'a' && arg[1] == ':')
! c2 = NUL;
! else
{
! c2 = *++name;
! *name = NUL;
}
! list_one_var(varp, arg);
! if (c2 != NUL)
! *name = c2;
}
- else
- list_one_var(varp, (char_u *)"");
}
*p = c1;
}
--- 378,412 ----
{
c1 = *p;
*p = NUL;
! i = find_vim_var(arg, (int)(p - arg));
! if (i >= 0)
! list_vim_var(i);
else
{
! varp = find_var(arg, FALSE);
! if (varp == NULL)
! EMSG2("Unknown variable: \"%s\"", arg);
! else
{
! name = vim_strchr(arg, ':');
! if (name != NULL)
{
! /* "a:" vars have no name stored, use whole
! * arg */
! if (arg[0] == 'a' && arg[1] == ':')
! c2 = NUL;
! else
! {
! c2 = *++name;
! *name = NUL;
! }
! list_one_var(varp, arg);
! if (c2 != NUL)
! *name = c2;
}
! else
! list_one_var(varp, (char_u *)"");
}
}
*p = c1;
}
***************
*** 4465,4483 ****
*/
static void
list_one_var(v, prefix)
! VAR v;
! char_u *prefix;
{
! msg(prefix);
! if (v->var_name != NULL) /* "a:" vars don't have a name stored */
! msg_puts(v->var_name);
msg_putchar(' ');
msg_advance(22);
! if (v->var_type == VAR_NUMBER)
msg_putchar('#');
else
msg_putchar(' ');
! msg_outtrans(get_var_string(v));
}
/*
--- 4477,4527 ----
*/
static void
list_one_var(v, prefix)
! VAR v;
! char_u *prefix;
! {
! list_one_var_a(prefix, v->var_name, v->var_type, get_var_string(v));
! }
!
! /*
! * List the value of one "v:" variable.
! */
! static void
! list_vim_var(i)
! int i; /* index in vimvars[] */
! {
! char_u *p;
! char_u numbuf[NUMBUFLEN];
!
! if (vimvars[i].type == VAR_NUMBER)
! {
! p = numbuf;
! sprintf((char *)p, "%ld", (long)vimvars[i].val);
! }
! else if (vimvars[i].val == NULL)
! p = (char_u *)"";
! else
! p = vimvars[i].val;
! list_one_var_a((char_u *)"v:", vimvars[i].name, vimvars[i].type, p);
! }
!
! static void
! list_one_var_a(prefix, name, type, string)
! char_u *prefix;
! char_u *name;
! int type;
! char_u *string;
{
! msg_attr(prefix, 0); /* don't use msg(), it overwrites "v:statusmsg" */
! if (name != NULL) /* "a:" vars don't have a name stored */
! msg_puts(name);
msg_putchar(' ');
msg_advance(22);
! if (type == VAR_NUMBER)
msg_putchar('#');
else
msg_putchar(' ');
! msg_outtrans(string);
}
/*
*** ../vim-5.6a.6/src/version.c Tue Dec 21 21:48:28 1999
--- src/version.c Wed Dec 22 10:35:11 1999
***************
*** 420,421 ****
--- 420,423 ----
{ /* Add new patch number below this line */
+ /**/
+ 7,
/**/
--
INSPECTOR END OF FILM: Move along. There's nothing to see! Keep moving!
[Suddenly he notices the cameras.]
INSPECTOR END OF FILM: (to Camera) All right, put that away sonny.
[He walks over to it and puts his hand over the lens.]
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
--/-/---- Bram Moolenaar ----
[email protected] ----
[email protected] ---\-\--
\ \ www.vim.org/iccf www.moolenaar.net www.vim.org / /