4 From: Bram Moolenaar <Bram@moolenaar.net>
6 Content-Type: text/plain; charset=ISO-8859-1
7 Content-Transfer-Encoding: 8bit
11 Problem: ":let loaded_getscriptPlugin" doesn't clear to eol, result is
13 Solution: Clear to the end of the screen after displaying the first variable
18 *** ../vim-7.1.088/src/eval.c Tue Aug 14 22:40:13 2007
19 --- src/eval.c Wed Aug 29 22:40:15 2007
22 static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars));
23 static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon));
24 static char_u *skip_var_one __ARGS((char_u *arg));
25 ! static void list_hashtable_vars __ARGS((hashtab_T *ht, char_u *prefix, int empty));
26 ! static void list_glob_vars __ARGS((void));
27 ! static void list_buf_vars __ARGS((void));
28 ! static void list_win_vars __ARGS((void));
30 ! static void list_tab_vars __ARGS((void));
32 ! static void list_vim_vars __ARGS((void));
33 ! static void list_script_vars __ARGS((void));
34 ! static void list_func_vars __ARGS((void));
35 ! static char_u *list_arg_vars __ARGS((exarg_T *eap, char_u *arg));
36 static char_u *ex_let_one __ARGS((char_u *arg, typval_T *tv, int copy, char_u *endchars, char_u *op));
37 static int check_changedtick __ARGS((char_u *arg));
38 static char_u *get_lval __ARGS((char_u *name, typval_T *rettv, lval_T *lp, int unlet, int skip, int quiet, int fne_flags));
40 static int ex_let_vars __ARGS((char_u *arg, typval_T *tv, int copy, int semicolon, int var_count, char_u *nextchars));
41 static char_u *skip_var_list __ARGS((char_u *arg, int *var_count, int *semicolon));
42 static char_u *skip_var_one __ARGS((char_u *arg));
43 ! static void list_hashtable_vars __ARGS((hashtab_T *ht, char_u *prefix, int empty, int *first));
44 ! static void list_glob_vars __ARGS((int *first));
45 ! static void list_buf_vars __ARGS((int *first));
46 ! static void list_win_vars __ARGS((int *first));
48 ! static void list_tab_vars __ARGS((int *first));
50 ! static void list_vim_vars __ARGS((int *first));
51 ! static void list_script_vars __ARGS((int *first));
52 ! static void list_func_vars __ARGS((int *first));
53 ! static char_u *list_arg_vars __ARGS((exarg_T *eap, char_u *arg, int *first));
54 static char_u *ex_let_one __ARGS((char_u *arg, typval_T *tv, int copy, char_u *endchars, char_u *op));
55 static int check_changedtick __ARGS((char_u *arg));
56 static char_u *get_lval __ARGS((char_u *name, typval_T *rettv, lval_T *lp, int unlet, int skip, int quiet, int fne_flags));
59 static hashtab_T *find_var_ht __ARGS((char_u *name, char_u **varname));
60 static void vars_clear_ext __ARGS((hashtab_T *ht, int free_val));
61 static void delete_var __ARGS((hashtab_T *ht, hashitem_T *hi));
62 ! static void list_one_var __ARGS((dictitem_T *v, char_u *prefix));
63 ! static void list_one_var_a __ARGS((char_u *prefix, char_u *name, int type, char_u *string));
64 static void set_var __ARGS((char_u *name, typval_T *varp, int copy));
65 static int var_check_ro __ARGS((int flags, char_u *name));
66 static int var_check_fixed __ARGS((int flags, char_u *name));
68 static hashtab_T *find_var_ht __ARGS((char_u *name, char_u **varname));
69 static void vars_clear_ext __ARGS((hashtab_T *ht, int free_val));
70 static void delete_var __ARGS((hashtab_T *ht, hashitem_T *hi));
71 ! static void list_one_var __ARGS((dictitem_T *v, char_u *prefix, int *first));
72 ! static void list_one_var_a __ARGS((char_u *prefix, char_u *name, int type, char_u *string, int *first));
73 static void set_var __ARGS((char_u *name, typval_T *varp, int copy));
74 static int var_check_ro __ARGS((int flags, char_u *name));
75 static int var_check_fixed __ARGS((int flags, char_u *name));
84 argend = skip_var_list(arg, &var_count, &semicolon);
89 else if (!ends_excmd(*arg))
90 /* ":let var1 var2" */
91 ! arg = list_arg_vars(eap, arg);
101 ! list_script_vars();
105 eap->nextcmd = check_nextcmd(arg);
109 else if (!ends_excmd(*arg))
110 /* ":let var1 var2" */
111 ! arg = list_arg_vars(eap, arg, &first);
115 ! list_glob_vars(&first);
116 ! list_buf_vars(&first);
117 ! list_win_vars(&first);
119 ! list_tab_vars(&first);
121 ! list_script_vars(&first);
122 ! list_func_vars(&first);
123 ! list_vim_vars(&first);
125 eap->nextcmd = check_nextcmd(arg);
129 * If "empty" is TRUE also list NULL strings as empty strings.
132 ! list_hashtable_vars(ht, prefix, empty)
140 * If "empty" is TRUE also list NULL strings as empty strings.
143 ! list_hashtable_vars(ht, prefix, empty, first)
154 if (empty || di->di_tv.v_type != VAR_STRING
155 || di->di_tv.vval.v_string != NULL)
156 ! list_one_var(di, prefix);
162 if (empty || di->di_tv.v_type != VAR_STRING
163 || di->di_tv.vval.v_string != NULL)
164 ! list_one_var(di, prefix, first);
170 * List global variables.
175 ! list_hashtable_vars(&globvarht, (char_u *)"", TRUE);
179 * List buffer variables.
184 char_u numbuf[NUMBUFLEN];
186 ! list_hashtable_vars(&curbuf->b_vars.dv_hashtab, (char_u *)"b:", TRUE);
188 sprintf((char *)numbuf, "%ld", (long)curbuf->b_changedtick);
189 ! list_one_var_a((char_u *)"b:", (char_u *)"changedtick", VAR_NUMBER, numbuf);
193 * List window variables.
198 ! list_hashtable_vars(&curwin->w_vars.dv_hashtab, (char_u *)"w:", TRUE);
203 * List global variables.
206 ! list_glob_vars(first)
209 ! list_hashtable_vars(&globvarht, (char_u *)"", TRUE, first);
213 * List buffer variables.
216 ! list_buf_vars(first)
219 char_u numbuf[NUMBUFLEN];
221 ! list_hashtable_vars(&curbuf->b_vars.dv_hashtab, (char_u *)"b:",
224 sprintf((char *)numbuf, "%ld", (long)curbuf->b_changedtick);
225 ! list_one_var_a((char_u *)"b:", (char_u *)"changedtick", VAR_NUMBER,
230 * List window variables.
233 ! list_win_vars(first)
236 ! list_hashtable_vars(&curwin->w_vars.dv_hashtab,
237 ! (char_u *)"w:", TRUE, first);
243 * List tab page variables.
248 ! list_hashtable_vars(&curtab->tp_vars.dv_hashtab, (char_u *)"t:", TRUE);
253 * List tab page variables.
256 ! list_tab_vars(first)
259 ! list_hashtable_vars(&curtab->tp_vars.dv_hashtab,
260 ! (char_u *)"t:", TRUE, first);
266 * List Vim variables.
271 ! list_hashtable_vars(&vimvarht, (char_u *)"v:", FALSE);
275 * List script-local variables, if there is a script.
280 if (current_SID > 0 && current_SID <= ga_scripts.ga_len)
281 ! list_hashtable_vars(&SCRIPT_VARS(current_SID), (char_u *)"s:", FALSE);
285 * List function variables, if there is a function.
290 if (current_funccal != NULL)
291 list_hashtable_vars(¤t_funccal->l_vars.dv_hashtab,
292 ! (char_u *)"l:", FALSE);
296 * List variables in "arg".
299 ! list_arg_vars(eap, arg)
306 * List Vim variables.
309 ! list_vim_vars(first)
312 ! list_hashtable_vars(&vimvarht, (char_u *)"v:", FALSE, first);
316 * List script-local variables, if there is a script.
319 ! list_script_vars(first)
322 if (current_SID > 0 && current_SID <= ga_scripts.ga_len)
323 ! list_hashtable_vars(&SCRIPT_VARS(current_SID),
324 ! (char_u *)"s:", FALSE, first);
328 * List function variables, if there is a function.
331 ! list_func_vars(first)
334 if (current_funccal != NULL)
335 list_hashtable_vars(¤t_funccal->l_vars.dv_hashtab,
336 ! (char_u *)"l:", FALSE, first);
340 * List variables in "arg".
343 ! list_arg_vars(eap, arg, first)
355 ! case 'g': list_glob_vars(); break;
356 ! case 'b': list_buf_vars(); break;
357 ! case 'w': list_win_vars(); break;
359 ! case 't': list_tab_vars(); break;
361 ! case 'v': list_vim_vars(); break;
362 ! case 's': list_script_vars(); break;
363 ! case 'l': list_func_vars(); break;
365 EMSG2(_("E738: Can't list variables for %s"), name);
371 ! case 'g': list_glob_vars(first); break;
372 ! case 'b': list_buf_vars(first); break;
373 ! case 'w': list_win_vars(first); break;
375 ! case 't': list_tab_vars(first); break;
377 ! case 'v': list_vim_vars(first); break;
378 ! case 's': list_script_vars(first); break;
379 ! case 'l': list_func_vars(first); break;
381 EMSG2(_("E738: Can't list variables for %s"), name);
386 list_one_var_a((char_u *)"",
387 arg == arg_subsc ? name : name_start,
388 ! tv.v_type, s == NULL ? (char_u *)"" : s);
394 list_one_var_a((char_u *)"",
395 arg == arg_subsc ? name : name_start,
397 ! s == NULL ? (char_u *)"" : s,
404 * List the value of one internal variable.
407 ! list_one_var(v, prefix)
414 * List the value of one internal variable.
417 ! list_one_var(v, prefix, first)
427 s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID);
428 list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
429 ! s == NULL ? (char_u *)"" : s);
434 ! list_one_var_a(prefix, name, type, string)
440 /* don't use msg() or msg_attr() to avoid overwriting "v:statusmsg" */
444 s = echo_string(&v->di_tv, &tofree, numbuf, ++current_copyID);
445 list_one_var_a(prefix, v->di_key, v->di_tv.v_type,
446 ! s == NULL ? (char_u *)"" : s, first);
451 ! list_one_var_a(prefix, name, type, string, first)
456 + int *first; /* when TRUE clear rest of screen and set to FALSE */
458 /* don't use msg() or msg_attr() to avoid overwriting "v:statusmsg" */
464 if (type == VAR_FUNC)
465 msg_puts((char_u *)"()");
474 *** ../vim-7.1.088/src/version.c Thu Aug 30 10:34:19 2007
475 --- src/version.c Thu Aug 30 11:06:32 2007
479 { /* Add new patch number below this line */
485 Edison's greatest achievement came in 1879, when he invented the
486 electric company. Edison's design was a brilliant adaptation of the
487 simple electrical circuit: the electric company sends electricity
488 through a wire to a customer, then immediately gets the electricity
489 back through another wire
491 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
492 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
493 \\\ download, build and distribute -- http://www.A-A-P.org ///
494 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///