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

Robert Strandh rstrandh at common-lisp.net
Sun May 22 10:53:59 UTC 2005


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

Modified Files:
	climacssyntax.tex 
Log Message:
Made the description of the current buffer protocol implementation more
accurate.

Date: Sun May 22 12:53:59 2005
Author: rstrandh

Index: papers/ilc2005/syntax/climacssyntax.tex
diff -u papers/ilc2005/syntax/climacssyntax.tex:1.11 papers/ilc2005/syntax/climacssyntax.tex:1.12
--- papers/ilc2005/syntax/climacssyntax.tex:1.11	Sat May 21 22:14:00 2005
+++ papers/ilc2005/syntax/climacssyntax.tex	Sun May 22 12:53:59 2005
@@ -23,8 +23,8 @@
   \affaddr{London SE14 6NW, UK}\\
   \email{c.rhodes at gold.ac.uk}
   \alignauthor Robert Strandh\\
-  \affaddr{Equipe Image et son, LaBRI}\\
-  \affaddr{Domaine Universitaire}\\
+  \affaddr{LaBRI}\\
+  \affaddr{Universit\'{e} Bordeaux 1}\\
   \affaddr{351, cours de la Lib\'{e}ration}\\
   \affaddr{33405 Talence Cedex}
   \affaddr{FRANCE}\\
@@ -84,12 +84,16 @@
 Climacs' syntax analysis is a flexible protocol which can be implemented with a full language lexer and parser. GNU Emacs, the most commonly used Emacs-like editor, uses regular expressions for its syntax analysis. Because these regular expressions are applied lazily and not on the whole buffer, constructs such as Common Lisp's nestable \verb+#| |#+ block comments will often confuse the regular expressions. If the parser starts after the opening \verb+#|+ then the closing \verb+|#+ will be treated as the start of an escaped symbol name. Even if the regular expression parses the whole block comment correctly, other expressions can still match on the contents of the comment, leading to issues when the first character in a column in the block comment is the start of a definition. Emacs users quickly learn to insert a space before the open paren to work around Emacs' font-lock deficiencies.
 
 The Climacs text editor is a combination of frameworks for buffer
-representation and parsing parsing, loosely coupled with a CLIM-based
-display engine.  It includes the Flexichain library \cite{flexichain},
-which provides an editable sequence representation and mark (cursor)
-management based on a linked lists of lines, some of which are represented as a circular gap buffer; and an implementation of a
+representation and parsing, loosely coupled with a CLIM-based display
+engine.  It includes the Flexichain library \cite{flexichain}, which
+provides an editable sequence representation and mark (cursor)
+management using a simple linked lists used for implementing the
+buffer protocol; and an implementation of a
 slight modification of the Earley parsing algorithm \cite{earley}, to
-assist in the creation of syntax-aware editing modes. An application can combine a particular implementation of the buffer protocol, the syntax protocol, and its own display methods to produce a sophisticated editor for a particular language.
+assist in the creation of syntax-aware editing modes. An application
+can combine a particular implementation of the buffer protocol, the
+syntax protocol, and its own display methods to produce a
+sophisticated editor for a particular language.
 
 The Climacs buffer protocol, which provides a standard interface to
 common text editor buffer operations, uses the Flexichain library; we
@@ -115,13 +119,17 @@
 buffer protocol is independent of any implementation of the protocol,
 which allows flexible representations of buffers.
 
-Climacs provides an implementation of buffers as a 2-3-tree of lines.
-A line can be considered opened or closed. Editing operations are
-performed on opened lines, which are represented as a cursorchain. A
-fixed number of lines are kept opened according to a LRU scheme. When
-a line is closed it is converted to a vector. If the line contains
-only base-char objects this vector is a base-string; otherwise, it is
-unspecialized.
+The aim is for Climacs to provide several implementations of the
+buffer protocol, one of which will use a sequence of lines organized
+into a tree for quick access.  In this implementation, a line can be
+considered opened or closed. Editing operations are performed on
+opened lines, which are represented as a cursorchain (a Flexichain
+with an arbitrary number of cursors). A fixed number of lines are kept
+opened according to a LRU scheme. When a line is closed it is
+converted to a vector. If the line contains only base-char objects
+this vector is a base-string; otherwise, it is unspecialized.
+Currently, however, Climacs uses a single cursorchain for the entire
+buffer, in effect making it a simple gap-buffer implementation.  
 
 ``Protocol'' is not just an empty claim, as there are already multiple
 buffer implementations: Aleksandr Bakic's persistent buffer




More information about the Climacs-cvs mailing list