changeset 408:06234af3a8b7 v7.0106

updated for version 7.0106
author vimboss
date Sat, 09 Jul 2005 21:14:46 +0000
parents 0f6afaf1b8d1
children e6fd82f42ba0
files runtime/doc/todo.txt runtime/doc/version7.txt src/edit.c src/eval.c src/ex_cmds.c src/misc1.c src/search.c
diffstat 7 files changed, 95 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- 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<Tab>" 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)
--- 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*
 
--- 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);
 }
 
 /*
--- 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)
--- 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;
--- 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))
 	{
--- 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);