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    / /