Here's a revised patch.  Although the previous patch is harmless, it
turns out to address the problem at the wrong level.

The correct approach is to build the internal data structure with
variant spellings stored in the same order as they appear in the
personal dictionary.  Fortunately, this is easy, though the patch is
to a different file.  This one has been tested.  (That's what I get
for trying to rush out a fix before a meeting!)

Index: makedent.c

RCS file: RCS/makedent.c,v
retrieving revision 1.59
diff -u -r1.59 makedent.c
--- makedent.c  2005/04/20 23:16:32     1.59
+++ makedent.c  2005/11/03 22:11:35
@@ -447,9 +447,10 @@
     if (retval == 0)
        {
        /*
-       ** Couldn't combine the two entries.  Add a new variant.  For
-       ** ease, we'll stick it right behind the header, rather than
-       ** at the end of the list.
+       ** Couldn't combine the two entries.  Add a new variant.  We
+       ** stick it at the end of the variant list because it's
+       ** important to maintain order; this causes the personal
+       ** dictionary to have a stable ordering.
        */
        forcevheader (hdrp, oldp, newp);
        tdent = (struct dent *) mymalloc (sizeof (struct dent));
@@ -460,10 +461,13 @@
            return -1;
            }
        *tdent = *newp;
-       tdent->next = hdrp->next;
-       hdrp->next = tdent;
-       tdent->flagfield |= (hdrp->flagfield & MOREVARIANTS);
-       hdrp->flagfield |= MOREVARIANTS;
+       for (oldp = hdrp;
+         oldp->next != NULL  &&  oldp->flagfield & MOREVARIANTS;
+         oldp = oldp->next)
+           ;
+       tdent->next = oldp->next;
+       oldp->next = tdent;
+       oldp->flagfield |= MOREVARIANTS;
        combineaffixes (hdrp, newp);
        hdrp->flagfield |= (newp->flagfield & KEEP);
        if (captype (newp->flagfield) == FOLLOWCASE)

-- 
    Geoff Kuenning   [EMAIL PROTECTED]   http://www.cs.hmc.edu/~geoff/

The P in "PDF" is a lie.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to