[climacs-cvs] CVS update: papers/ilc2005/syntax/climacssyntax.tex

Brian Mastenbrook bmastenbrook at common-lisp.net
Tue May 24 15:01:49 UTC 2005


Update of /project/climacs/cvsroot/papers/ilc2005/syntax
In directory common-lisp.net:/tmp/cvs-serv10331

Modified Files:
	climacssyntax.tex 
Log Message:
Update the section about the proposed sequence-of-lines structure

Date: Tue May 24 17:01:49 2005
Author: bmastenbrook

Index: papers/ilc2005/syntax/climacssyntax.tex
diff -u papers/ilc2005/syntax/climacssyntax.tex:1.28 papers/ilc2005/syntax/climacssyntax.tex:1.29
--- papers/ilc2005/syntax/climacssyntax.tex:1.28	Tue May 24 16:23:44 2005
+++ papers/ilc2005/syntax/climacssyntax.tex	Tue May 24 17:01:49 2005
@@ -196,30 +196,34 @@
 is alleviated by sharing significant portions of older buffer versions
 with newer versions.
 
-There is scope for provision of further buffer implementations in
-Climacs, one of which will use a sequence of lines organised into a
-tree for quick access.  In this structure, a line can be considered
-opened or closed.  When a line is opened, it is represented as a
-Flexichain {\tt cursorchain}.  All editing operations are performed on
-open lines, and a fixed number of lines are kept opened according to a
-least-recently-used scheme.  When a line is closed it is converted to
-a vector for efficient storage and access.  If the line contains only
-{\tt base-char} objects this vector is a {\tt base-string}; otherwise,
-it is unspecialised.
+It is anticipated that Climacs will provide several other buffer
+implementations, one of which will use a sequence of lines organised
+into a tree for quick access.  In this structure, a line can be
+considered opened or closed.  When a line is opened, it is represented
+as a Flexichain {\tt cursorchain}.  All editing operations are
+performed on open lines, and a fixed number of lines are kept opened
+according to a least-recently-used scheme.  When a line is closed it
+is converted to a vector for efficient storage and access.  If the
+line contains only {\tt base-char} objects this vector is a {\tt
+  base-string}; otherwise, it is unspecialised.
 
 This structure has the advantage of efficient line-based access in the
-buffer. It also provides much better behaviour than that of a single
-gap buffer when a user is editing two disparate sections in a large
-file.  With a single gap buffer, the gap must be moved to the point of
-edit before an edit operation is allowed; when the buffer is large and
-edit operations occur frequently at multiple locations in the buffer,
-this requires a substantial amount of copying between edits. In this
-situation single-gap-buffer editors such as GNU Emacs will noticeably
-pause between edits to move the gap.  A structure which contains a
-sequence of lines and keeps the most recently used lines open as gap
-buffers can operate as a multi-gap buffer with automatic gap
-placement, while not suffering poor performance when accessing a
-specific line in the buffer.
+buffer, in contrast to a single gap buffer implementation, where
+determining the line number of a mark or placing a mark at a specific
+line is $O(n)$, as the entire buffer must be scanned to determine how
+many newlines precede the mark. The proposed structure also provides
+much better behaviour than that of a single gap buffer when a user is
+editing two disparate sections in a large file.  With a single gap
+buffer, the gap must be moved to the point of edit before an edit
+operation is allowed; when the buffer is large and edit operations
+occur frequently at multiple locations in the buffer, this requires a
+substantial amount of copying between edits. In this situation
+single-gap-buffer editors such as GNU Emacs will noticeably pause
+between edits to move the gap.  A structure which contains a sequence
+of lines and keeps the most recently used lines open as gap buffers
+can operate as a multi-gap buffer with automatic gap placement, while
+not suffering poor performance when accessing a specific line in the
+buffer.
 
 The efficiency of Climacs buffers depends of course on the
 implementation of the buffer protocol that is used. Space efficiency




More information about the Climacs-cvs mailing list