]> granicus.if.org Git - vim/commitdiff
updated for version 7.0106 v7.0106
authorBram Moolenaar <Bram@vim.org>
Sat, 9 Jul 2005 21:14:46 +0000 (21:14 +0000)
committerBram Moolenaar <Bram@vim.org>
Sat, 9 Jul 2005 21:14:46 +0000 (21:14 +0000)
runtime/doc/todo.txt
runtime/doc/version7.txt
src/edit.c
src/eval.c
src/ex_cmds.c
src/misc1.c
src/search.c

index 449fd9969c81d14edc7adc9572e4525774ade43e..8e65ef64e253ef438b00f660fca4a2dc83a1db02 100644 (file)
@@ -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)
index f6d4965f99ae398425825b5ed953ec51df7bd3de..10a561ff1a9d3a2c774aec5a41e90f06b07a75ee 100644 (file)
@@ -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*
 
index 25d4b584c2ff4311410a9bc304e21797449d18ae..7028dd32a0c21505aa0a55d48b9b82de02f0c0da 100644 (file)
@@ -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);
 }
 
 /*
index c1762265ff60d90d0826c3208b7c400d9bd71a4e..2b6703a98766b922ffcddaefa4362e8b88446cda 100644 (file)
@@ -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)
index 1b99caf42bac05bfd215981d44b4f8d0f1182876..9ce1fdd5cbadf8e6c528eb8e91f13a7900e74915 100644 (file)
@@ -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;
index fcc87263e9d32a1ea34ab6df9d46eaea65665b25..9154b964523f7c23b20c4ebdbb5a58f47c619c63 100644 (file)
@@ -5158,7 +5158,7 @@ cin_ispreproc_cont(pp, lnump)
     linenr_T   lnum = *lnump;
     int                retval = FALSE;
 
-    while (1)
+    for (;;)
     {
        if (cin_ispreproc(line))
        {
index 20745d9bc6a15ba84e7797d8be9ab6abefd84201..034d9c4a8c9485163e189a0dbda014bf2794f119 100644 (file)
@@ -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);