]> granicus.if.org Git - vim/commitdiff
updated for version 7.0044
authorBram Moolenaar <Bram@vim.org>
Tue, 25 Jan 2005 22:18:08 +0000 (22:18 +0000)
committerBram Moolenaar <Bram@vim.org>
Tue, 25 Jan 2005 22:18:08 +0000 (22:18 +0000)
src/hashtable.c
src/if_python.c
src/if_tcl.c
src/misc1.c
src/proto/hashtable.pro

index 11cb469e979fe6cfd8d7c1533ab70fb05f07703b..1dea06790505cec0bb7bb0308bb9d350180725bb 100644 (file)
 /* Magic value for algorithm that walks through the array. */
 #define PERTURB_SHIFT 5
 
-static hashitem *hash_lookup __ARGS((hashtable *ht, char_u *key, long_u hash));
-static int hash_add_item __ARGS((hashtable *ht, hashitem *hi, char_u *key, long_u hash));
-static int hash_may_resize __ARGS((hashtable *ht));
-static long_u hash_hash __ARGS((char_u *key));
+static int hash_may_resize __ARGS((hashtab_T *ht));
 
 #if 0  /* not used */
 /*
  * Create an empty hash table.
  * Returns NULL when out of memory.
  */
-    hashtable *
+    hashtab_T *
 hash_create()
 {
-    hashtable *ht;
+    hashtab_T *ht;
 
-    ht = (hashtable *)alloc(sizeof(hashtable));
+    ht = (hashtab_T *)alloc(sizeof(hashtab_T));
     if (ht != NULL)
        hash_init(ht);
     return ht;
@@ -65,10 +62,10 @@ hash_create()
  */
     void
 hash_init(ht)
-    hashtable *ht;
+    hashtab_T *ht;
 {
     /* This zeroes all "ht_" entries and all the "hi_key" in "ht_smallarray". */
-    vim_memset(ht, 0, sizeof(hashtable));
+    vim_memset(ht, 0, sizeof(hashtab_T));
     ht->ht_array = ht->ht_smallarray;
     ht->ht_mask = HT_INIT_SIZE - 1;
 }
@@ -79,7 +76,7 @@ hash_init(ht)
  */
     void
 hash_clear(ht)
-    hashtable *ht;
+    hashtab_T *ht;
 {
     if (ht->ht_array != ht->ht_smallarray)
        vim_free(ht->ht_array);
@@ -93,9 +90,9 @@ hash_clear(ht)
  * WARNING: The returned pointer becomes invalid when the hashtable is changed
  * (adding, setting or removing an item)!
  */
-    hashitem *
+    hashitem_T *
 hash_find(ht, key)
-    hashtable  *ht;
+    hashtab_T  *ht;
     char_u     *key;
 {
     return hash_lookup(ht, key, hash_hash(key));
@@ -104,15 +101,15 @@ hash_find(ht, key)
 /*
  * Like hash_find(), but caller computes "hash".
  */
-    static hashitem *
+    hashitem_T *
 hash_lookup(ht, key, hash)
-    hashtable  *ht;
+    hashtab_T  *ht;
     char_u     *key;
-    long_u     hash;
+    hash_T     hash;
 {
-    long_u     perturb;
-    hashitem   *freeitem;
-    hashitem   *hi;
+    hash_T     perturb;
+    hashitem_T *freeitem;
+    hashitem_T *hi;
     int                idx;
 
     /*
@@ -163,11 +160,11 @@ hash_lookup(ht, key, hash)
  */
     int
 hash_add(ht, key)
-    hashtable  *ht;
+    hashtab_T  *ht;
     char_u     *key;
 {
-    long_u     hash = hash_hash(key);
-    hashitem   *hi;
+    hash_T     hash = hash_hash(key);
+    hashitem_T *hi;
 
     hi = hash_lookup(ht, key, hash);
     if (!HASHITEM_EMPTY(hi))
@@ -184,12 +181,12 @@ hash_add(ht, key)
  * "hi" is invalid after this!
  * Returns OK or FAIL (out of memory).
  */
-    static int
+    int
 hash_add_item(ht, hi, key, hash)
-    hashtable  *ht;
-    hashitem   *hi;
+    hashtab_T  *ht;
+    hashitem_T *hi;
     char_u     *key;
-    long_u     hash;
+    hash_T     hash;
 {
     /* If resizing failed before and it fails again we can't add an item. */
     if (ht->ht_error && hash_may_resize(ht) == FAIL)
@@ -217,7 +214,7 @@ hash_add_item(ht, hi, key, hash)
  */
     void
 hash_set(hi, key)
-    hashitem   *hi;
+    hashitem_T *hi;
     char_u     *key;
 {
     hi->hi_key = key;
@@ -231,8 +228,8 @@ hash_set(hi, key)
  */
     void
 hash_remove(ht, hi)
-    hashtable  *ht;
-    hashitem   *hi;
+    hashtab_T  *ht;
+    hashitem_T *hi;
 {
     --ht->ht_used;
     hi->hi_key = HI_KEY_REMOVED;
@@ -246,7 +243,7 @@ hash_remove(ht, hi)
  */
     void
 hash_lock(ht)
-    hashtable  *ht;
+    hashtab_T  *ht;
 {
     ++ht->ht_locked;
 }
@@ -258,7 +255,7 @@ hash_lock(ht)
  */
     void
 hash_unlock(ht)
-    hashtable  *ht;
+    hashtab_T  *ht;
 {
     --ht->ht_locked;
     (void)hash_may_resize(ht);
@@ -271,17 +268,17 @@ hash_unlock(ht)
  */
     static int
 hash_may_resize(ht)
-    hashtable  *ht;
+    hashtab_T  *ht;
 {
-    hashitem   temparray[HT_INIT_SIZE];
-    hashitem   *oldarray, *newarray;
-    hashitem   *olditem, *newitem;
+    hashitem_T temparray[HT_INIT_SIZE];
+    hashitem_T *oldarray, *newarray;
+    hashitem_T *olditem, *newitem;
     int                newi;
     int                todo;
     long_u     oldsize, newsize;
     long_u     minsize;
     long_u     newmask;
-    long_u     perturb;
+    hash_T     perturb;
 
     /* Don't resize a locked table. */
     if (ht->ht_locked > 0)
@@ -339,7 +336,7 @@ hash_may_resize(ht)
     else
     {
        /* Allocate an array. */
-       newarray = (hashitem *)alloc((unsigned)(sizeof(hashitem) * newsize));
+       newarray = (hashitem_T *)alloc((unsigned)(sizeof(hashitem_T) * newsize));
        if (newarray == NULL)
        {
            /* Out of memory.  When there are NULL items still return OK.
@@ -352,7 +349,7 @@ hash_may_resize(ht)
        }
        oldarray = ht->ht_array;
     }
-    vim_memset(newarray, 0, (size_t)(sizeof(hashitem) * newsize));
+    vim_memset(newarray, 0, (size_t)(sizeof(hashitem_T) * newsize));
 
     /*
      * Move all the items from the old array to the new one, placing them in
@@ -398,12 +395,12 @@ hash_may_resize(ht)
  * Get the hash number for a key.  Uses the ElfHash algorithm, which is
  * supposed to have an even distribution (suggested by Charles Campbell).
  */
-    static long_u
+    hash_T
 hash_hash(key)
     char_u     *key;
 {
-    long_u     hash = 0;
-    long_u     g;
+    hash_T     hash = 0;
+    hash_T     g;
     char_u     *p = key;
 
     while (*p != NUL)
index 511378a0d36ada8e4e2028d1dda24e13ae253ec9..04a8d179a9ffeb0c92365c6066eb375338d60e74 100644 (file)
@@ -891,8 +891,8 @@ PythonIO_Init(void)
     /* Fixups... */
     OutputType.ob_type = &PyType_Type;
 
-    PySys_SetObject("stdout", (PyObject *)(&Output));
-    PySys_SetObject("stderr", (PyObject *)(&Error));
+    PySys_SetObject("stdout", (PyObject *)(void *)&Output);
+    PySys_SetObject("stderr", (PyObject *)(void *)&Error);
 
     if (PyErr_Occurred())
     {
@@ -2190,9 +2190,9 @@ PythonMod_Init(void)
     VimError = Py_BuildValue("s", "vim.error");
 
     PyDict_SetItemString(dict, "error", VimError);
-    PyDict_SetItemString(dict, "buffers", (PyObject *)(&TheBufferList));
-    PyDict_SetItemString(dict, "current", (PyObject *)(&TheCurrent));
-    PyDict_SetItemString(dict, "windows", (PyObject *)(&TheWindowList));
+    PyDict_SetItemString(dict, "buffers", (PyObject *)(void *)&TheBufferList);
+    PyDict_SetItemString(dict, "current", (PyObject *)(void *)&TheCurrent);
+    PyDict_SetItemString(dict, "windows", (PyObject *)(void *)&TheWindowList);
 
     if (PyErr_Occurred())
        return -1;
index 61b1fb9da912dbb6c3213bab92b6392e50d57c7e..3c08325a2a0583f49b57d90d424b239084a681d4 100644 (file)
@@ -106,6 +106,11 @@ static tcl_info tclinfo = { NULL, 0, 0, 0, NULL, NULL };
 #define VIMOUT ((ClientData)1)
 #define VIMERR ((ClientData)2)
 
+/* This appears to be new in Tcl 8.4. */
+#ifndef CONST84
+# define CONST84
+#endif
+
 /*
  *  List of Tcl interpreters who reference a vim window or buffer.
  *  Each buffer and window has it's own list in the tcl_ref struct member.
@@ -384,9 +389,8 @@ buffercmd(dummy, interp, objc, objv)
     buf_T      *buf;
     Tcl_Obj    *resobj;
     int                err, n, idx;
-
     enum {BCMD_EXISTS, BCMD_LIST};
-    static char *bcmdoptions[] =
+    static CONST84 char *bcmdoptions[] =
     {
        "exists", "list", (char *)0
     };
@@ -533,7 +537,7 @@ bufselfcmd(ref, interp, objc, objv)
        BUF_GET, BUF_INSERT, BUF_LAST, BUF_MARK, BUF_NAME, BUF_NUMBER,
        BUF_OPTION, BUF_SET, BUF_WINDOWS
     };
-    static char *bufoptions[] =
+    static CONST84 char *bufoptions[] =
     {
        "append", "command", "count", "delcmd", "delete", "expr",
        "get", "insert", "last", "mark", "name", "number",
@@ -966,7 +970,7 @@ winselfcmd(ref, interp, objc, objv)
        WIN_BUFFER, WIN_COMMAND, WIN_CURSOR, WIN_DELCMD, WIN_EXPR,
        WIN_HEIGHT, WIN_OPTION
     };
-    static char *winoptions[] =
+    static CONST84 char *winoptions[] =
     {
        "buffer", "command", "cursor", "delcmd", "expr",
        "height", "option", (char *)0
@@ -1179,7 +1183,7 @@ tclgetlinenum(interp, obj, valueP, buf)
 
     enum { LN_BEGIN, LN_BOTTOM, LN_END, LN_FIRST, LN_LAST, LN_START, LN_TOP };
 
-    static char *keyw[] =
+    static CONST84 char *keyw[] =
     {
        "begin", "bottom", "end", "first", "last", "start", "top", (char *)0
     };
@@ -1311,7 +1315,7 @@ tclsetoption(interp, objc, objv, objn)
     Tcl_Obj    *resobj;
 
     enum { OPT_OFF, OPT_ON, OPT_TOGGLE };
-    static char *optkw[] = { "off", "on", "toggle", (char *)0 };
+    static CONST84 char *optkw[] = { "off", "on", "toggle", (char *)0 };
 
     nobjs = objc - objn;
     if (nobjs != 1 && nobjs != 2)
@@ -1905,7 +1909,7 @@ tclexit(error)
     {
        char *result;
 
-       result = Tcl_GetStringResult(tclinfo.interp);
+       result = (char *)Tcl_GetStringResult(tclinfo.interp);
        if (error == TCL_OK)
        {
            tclmsg(result);
@@ -2013,7 +2017,7 @@ ex_tcldo(eap)
        err = Tcl_Eval(tclinfo.interp, script);
        if (err != TCL_OK)
            break;
-       line = Tcl_GetVar(tclinfo.interp, var_line, 0);
+       line = (char *)Tcl_GetVar(tclinfo.interp, var_line, 0);
        if (line)
        {
            if (ml_replace((linenr_T)rs, (char_u *)line, TRUE) != OK)
@@ -2059,7 +2063,7 @@ tcldelallrefs(ref)
                err = Tcl_GlobalEvalObj(ref->interp, ref->delcmd);
                if (err != TCL_OK)
                {
-                   result = Tcl_GetStringResult(ref->interp);
+                   result = (char *)Tcl_GetStringResult(ref->interp);
                    if (result)
                        tclerrmsg(result);
                }
index 4c2b55e918ccbdf1644a307e1e7bd8e220f6bd1c..4d7cf60287cf7933dda20296a2d95fc96d9ef6e2 100644 (file)
@@ -3092,10 +3092,15 @@ msgmore(n)
     long pn;
 
     if (global_busy        /* no messages now, wait until global is finished */
-           || keep_msg != NULL /* there is a message already, skip this one */
            || !messaging())  /* 'lazyredraw' set, don't do messages now */
        return;
 
+    /* We don't want to overwrite another important message, but do overwrite
+     * a previous "more lines" or "fewer lines" message, so that "5dd" and
+     * then "put" reports the last action. */
+    if (keep_msg != NULL && !keep_msg_more)
+       return;
+
     if (n > 0)
        pn = n;
     else
@@ -3123,6 +3128,7 @@ msgmore(n)
        {
            set_keep_msg(msg_buf);
            keep_msg_attr = 0;
+           keep_msg_more = TRUE;
        }
     }
 }
index 6cc8041d99d5fd498b65e8c9ec8b126287805527..cc41647967833dee8487db9ec2b4ae2283c527d6 100644 (file)
@@ -1,9 +1,12 @@
 /* hashtable.c */
-void hash_init __ARGS((hashtable *ht));
-void hash_clear __ARGS((hashtable *ht));
-hashitem *hash_find __ARGS((hashtable *ht, char_u *key));
-int hash_add __ARGS((hashtable *ht, char_u *key));
-void hash_remove __ARGS((hashtable *ht, hashitem *hi));
-void hash_lock __ARGS((hashtable *ht));
-void hash_unlock __ARGS((hashtable *ht));
+void hash_init __ARGS((hashtab_T *ht));
+void hash_clear __ARGS((hashtab_T *ht));
+hashitem_T *hash_find __ARGS((hashtab_T *ht, char_u *key));
+hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash));
+int hash_add __ARGS((hashtab_T *ht, char_u *key));
+int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
+void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
+void hash_lock __ARGS((hashtab_T *ht));
+void hash_unlock __ARGS((hashtab_T *ht));
+hash_T hash_hash __ARGS((char_u *key));
 /* vim: set ft=c : */