Xref: utzoo comp.emacs:3706 comp.editors:218
Path: utzoo!attcan!uunet!seismo!sundc!pitstop!sun!breakpoint!jpayne
From: jpayne%breakpoint@Sun.COM (Jonathan Payne)
Newsgroups: comp.emacs,comp.editors
Subject: Re: Buffer data structures
Keywords: data structures, buffers
Message-ID: <58104@sun.uucp>
Date: 27 Jun 88 18:54:20 GMT
References: <18612@cornell.UUCP>
Sender: news@sun.uucp
Reply-To: jpayne@sun.UUCP (Jonathan Payne)
Organization: Sun Microsystems, Mountain View
Lines: 16


I like the buffer gap approach, too.  If you have VM it makes a lot of
sense.  But I also like linked lists because it makes a complete
redisplay very cheap.  A typical redisplay algorithm assigns a unique ID
to every line that's displayed on the screen, and whenever an update is
done the new ID's are compared to the old ones, and lines are inserted
or deleted (from the screen) or just redrawn as necessary.  With a linked
list the unique ID can be just the pointer to the line, which is very
quick to calculate.  In Gosling's emacs the unique ID is gotten by
hashing on the contents of the line, which is rather time consuming.

Do you know a good way to do intelligent (i.e., insert/delete line)
redisplay with a buffer gap scheme, without having to set all sorts of
flags to speed things up?  How does GNU do it?  I know it started out as
Gosling's emacs, but the last time I looked I didn't see any code hashing
on hashing on the contents of line.