summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/todo.txt16
-rw-r--r--runtime/doc/version7.txt10
-rw-r--r--src/edit.c2
-rw-r--r--src/eval.c85
-rw-r--r--src/ex_cmds.c2
-rw-r--r--src/misc1.c2
-rw-r--r--src/search.c4
7 files changed, 93 insertions, 28 deletions
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 449fd9969..8e65ef64e 100644
--- 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 Vim development. See |sponsor|.
*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 @@ Macintosh:
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 @@ Insert mode:
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
index f6d4965f9..10a561ff1 100644
--- 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 is expression @= contains. ":let @=
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
index 25d4b584c..7028dd32a 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2683,7 +2683,7 @@ call_completefunc(line, base, col, preproc)
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
index c1762265f..2b6703a98 100644
--- 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.
+ * Returns OK or FAIL.
*/
- char_u *
-call_vim_function(func, argc, argv, safe)
+ static int
+call_vim_function(func, argc, argv, safe, rettv)
char_u *func;
int argc;
char_u **argv;
int safe; /* use the sandbox */
+ typval_T *rettv;
{
- char_u *retval = NULL;
- 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
index 1b99caf42..9ce1fdd5c 100644
--- 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
index fcc87263e..9154b9645 100644
--- 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
index 20745d9bc..034d9c4a8 100644
--- a/src/search.c
+++ b/src/search.c
@@ -3745,7 +3745,7 @@ find_next_quote(line, col, quotechar, escape)
{
int c;
- while (1)
+ for (;;)
{
c = line[col];
if (c == NUL)
@@ -3886,7 +3886,7 @@ current_quote(oap, count, include, quotechar)
* 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);