# HG changeset patch # User vimboss # Date 1120943686 0 # Node ID 06234af3a8b7df68bfaf0efa87edfed2d743f6c7 # Parent 0f6afaf1b8d1fc9ceafe27bdd29ddc6fefbedcd3 updated for version 7.0106 diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0aa. Last change: 2005 Jul 08 +*todo.txt* For Vim version 7.0aa. Last change: 2005 Jul 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,6 +30,11 @@ be worked on, but only if you sponsor Vi *known-bugs* -------------------- Known bugs and current work ----------------------- +9 Editing a XML file with a long line is extremely slow. Example file from + Randy Parker (Dec 13). Editing the dictionaries for engspchk plugin with + syntax highlighting is also very slow. + Limit the searching for items to a few hundred characters? + Add extra list of file locations. Can be used with: :ltag list of matching tags, like :tselect @@ -862,10 +867,6 @@ 8 On MS-Windows ":make" doesn't show o Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter Briscoe says it's not as good. 8 'fillchars' doesn't work for multi-byte characters. -9 Editing a XML file with a long line is extremely slow. Example file from - Randy Parker (Dec 13). Editing the dictionaries for engspchk plugin with - syntax highlighting is also very slow. - Limit the searching for items to a few hundred characters? 8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing ":buf foo" doesn't find the second one. (George V. Reilly) 7 Output for ":scriptnames" and ":breaklist" should shorten the file names: @@ -2339,6 +2340,11 @@ 7 Use 'matchpairs' for 'showmatch': Wh 8 Wrong indent below ? : with (): if ((a ? (b) : c) != 0) aligns with ":". +8 Using "+" part of 'cinoptions' where it's not expected (Alexei Alexandrov): + if (a) + { + } else + asdf; 8 Wrong indent for ":" after a method with line break in arguments: Foo::Foo (int one, int two) diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0aa. Last change: 2005 Jul 08 +*version7.txt* For Vim version 7.0aa. Last change: 2005 Jul 09 VIM REFERENCE MANUAL by Bram Moolenaar @@ -678,6 +678,14 @@ When using @= in an expression the value A ! can be added to ":popup" to have the popup menu appear at the mouse pointer position instead of the text cursor. +The table with encodings has been expanded with many MS-Windows codepages, +such as cp1250 and cp737, so that these can also be used on Unix without +prepending "8bit-". + +Added the "customlist" completion argument to a user-defined command. The +user-defined completion function should return the completion candidates as a +Vim List and the returned results are not filtered by Vim. + ============================================================================== COMPILE TIME CHANGES *compile-changes-7* diff --git a/src/edit.c b/src/edit.c --- a/src/edit.c +++ b/src/edit.c @@ -2683,7 +2683,7 @@ call_completefunc(line, base, col, prepr args[1] = base; args[2] = colbuf; args[3] = (char_u *)(preproc ? "1" : "0"); - return call_vim_function(curbuf->b_p_cfu, 4, args, FALSE); + return (char_u *)call_func_retstr(curbuf->b_p_cfu, 4, args, FALSE); } /* diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -1272,28 +1272,29 @@ get_spellword(list, pp) #if (defined(FEAT_USR_CMDS) && defined(FEAT_CMDL_COMPL)) || defined(PROTO) /* - * Call some vimL function and return the result as a string + * Call some vimL function and return the result in "*rettv". * Uses argv[argc] for the function arguments. - */ - char_u * -call_vim_function(func, argc, argv, safe) + * Returns OK or FAIL. + */ + static int +call_vim_function(func, argc, argv, safe, rettv) char_u *func; int argc; char_u **argv; int safe; /* use the sandbox */ -{ - char_u *retval = NULL; - typval_T rettv; + typval_T *rettv; +{ typval_T *argvars; long n; int len; int i; int doesrange; void *save_funccalp = NULL; + int ret; argvars = (typval_T *)alloc((unsigned)(argc * sizeof(typval_T))); if (argvars == NULL) - return NULL; + return FAIL; for (i = 0; i < argc; i++) { @@ -1325,22 +1326,72 @@ call_vim_function(func, argc, argv, safe ++sandbox; } - rettv.v_type = VAR_UNKNOWN; /* clear_tv() uses this */ - if (call_func(func, (int)STRLEN(func), &rettv, argc, argvars, + rettv->v_type = VAR_UNKNOWN; /* clear_tv() uses this */ + ret = call_func(func, (int)STRLEN(func), rettv, argc, argvars, curwin->w_cursor.lnum, curwin->w_cursor.lnum, - &doesrange, TRUE, NULL) == OK) - retval = vim_strsave(get_tv_string(&rettv)); - - clear_tv(&rettv); - vim_free(argvars); - + &doesrange, TRUE, NULL); if (safe) { --sandbox; restore_funccal(save_funccalp); } + vim_free(argvars); + + if (ret == FAIL) + clear_tv(rettv); + + return ret; +} + +/* + * Call some vimL function and return the result as a string + * Uses argv[argc] for the function arguments. + */ + void * +call_func_retstr(func, argc, argv, safe) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ +{ + typval_T rettv; + char_u *retval = NULL; + + if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) + return NULL; + + retval = vim_strsave(get_tv_string(&rettv)); + + clear_tv(&rettv); + return retval; } + +/* + * Call some vimL function and return the result as a list + * Uses argv[argc] for the function arguments. + */ + void * +call_func_retlist(func, argc, argv, safe) + char_u *func; + int argc; + char_u **argv; + int safe; /* use the sandbox */ +{ + typval_T rettv; + + if (call_vim_function(func, argc, argv, safe, &rettv) == FAIL) + return NULL; + + if (rettv.v_type != VAR_LIST) + { + clear_tv(&rettv); + return NULL; + } + + return rettv.vval.v_list; +} + #endif /* @@ -1640,7 +1691,7 @@ skip_var_list(arg, var_count, semicolon) { /* "[var, var]": find the matching ']'. */ p = arg; - while (1) + for (;;) { p = skipwhite(p + 1); /* skip whites after '[', ';' or ',' */ s = skip_var_one(p); @@ -11315,7 +11366,7 @@ find_some_match(argvars, rettv, type) { regmatch.rm_ic = p_ic; - while (1) + for (;;) { if (l != NULL) { @@ -11472,7 +11523,7 @@ max_min(argvars, rettv, domax) if (li != NULL) { n = get_tv_number_chk(&li->li_tv, &error); - while (1) + for (;;) { li = li->li_next; if (li == NULL) diff --git a/src/ex_cmds.c b/src/ex_cmds.c --- a/src/ex_cmds.c +++ b/src/ex_cmds.c @@ -3562,7 +3562,7 @@ ex_append(eap) if (curbuf->b_p_iminsert == B_IMODE_LMAP) State |= LANGMAP; - while (1) + for (;;) { msg_scroll = TRUE; need_wait_return = FALSE; diff --git a/src/misc1.c b/src/misc1.c --- a/src/misc1.c +++ b/src/misc1.c @@ -5158,7 +5158,7 @@ cin_ispreproc_cont(pp, lnump) linenr_T lnum = *lnump; int retval = FALSE; - while (1) + for (;;) { if (cin_ispreproc(line)) { diff --git a/src/search.c b/src/search.c --- a/src/search.c +++ b/src/search.c @@ -3745,7 +3745,7 @@ find_next_quote(line, col, quotechar, es { int c; - while (1) + for (;;) { c = line[col]; if (c == NUL) @@ -3886,7 +3886,7 @@ current_quote(oap, count, include, quote * Also do this when there is a Visual area, a' may leave the cursor * in between two strings. */ col_start = 0; - while (1) + for (;;) { /* Find open quote character. */ col_start = find_next_quote(line, col_start, quotechar, NULL);