[climacs-cvs] CVS update: climacs/Doc/climacs-internals.texi
Elliott Johnson
ejohnson at common-lisp.net
Thu Jan 6 17:56:44 UTC 2005
Update of /project/climacs/cvsroot/climacs/Doc
In directory common-lisp.net:/tmp/cvs-serv22737/Doc
Modified Files:
climacs-internals.texi
Log Message:
protocol update for kill ring
Date: Thu Jan 6 18:56:43 2005
Author: ejohnson
Index: climacs/Doc/climacs-internals.texi
diff -u climacs/Doc/climacs-internals.texi:1.5 climacs/Doc/climacs-internals.texi:1.6
--- climacs/Doc/climacs-internals.texi:1.5 Wed Dec 29 07:58:55 2004
+++ climacs/Doc/climacs-internals.texi Thu Jan 6 18:56:42 2005
@@ -1649,6 +1649,85 @@
@deftp {initarg} :records
@end deftp
+ at chapter Kill Ring Protocol
+
+ at section Overview
+
+During the process of text editing it may become necessary for regions of text
+to be manipulated non-sequentially. The kill ring and its surrounding protocol
+offers both a temporary location for data to be stored, as well as methods for
+stored data to be accessed.
+
+Conceptually, the kill ring is a stack of bounded depth, so that when elements
+are pushed beyond that depth, the oldest element is removed. All newly added
+data is attached to a single point at the ``start of ring position'' or SORP.
+
+This protocol provides two methods which govern how data is to be attached to the
+SORP. The first method moves the current SORP to a new position, on to which a new
+object is attached. The second conserves the current position and replaces its
+contents with a sequence constructed of new and pre-existing SORP objects. This
+latter method is refered to as a ``concatenating push''.
+
+For data retrievial the kill ring class provides a ``yank point'' which
+allows focus to be shifted from the SORP to other positions within the kill ring.
+The yank point is limited to two types of motition, one being a rotation away from the SORP
+and the other being an immediate return or ``reset'' to the start position.
+
+ at section General
+
+ at deftp {class} kill-ring
+A class for all kill rings.
+ at end deftp
+
+ at deftp {init-arg} :max-size
+A limitation placed upon the number of elements held by a kill ring. Once the maximum size
+has been reached, older entries must first be removed before new ones can be added.
+ at end deftp
+
+ at deffn {generic function} kill-ring-max-size kill-ring
+Returns the value of a kill ring's maximum size.
+ at end deffn
+
+ at deffn {generic function} {(setf kill-ring-max-size)} kill-ring size
+Alters the maximum size of a kill ring even if it means dropping
+elements to do so.
+ at end deffn
+
+ at deffn {generic function} kill-ring-length kill-ring
+Returns the current length of a kill-ring. Note this is different than
+kill-ring-max-size.
+ at end deffn
+
+ at deffn {generic function} kill-ring-standard-push kill-ring vector
+Pushes a vector of objects onto a given kill ring creating a new start of ring
+position. This function is much like an everyday lisp push with size considerations.
+If the length of the kill ring is greater than its maximum size, ``older'' elements
+will be removed from the ring until the maximum size is reached.
+ at end deffn
+
+ at deffn {generic function} kill-ring-concatenating-push kill-ring vector
+Concatenates the contents of vector onto the end of the contents of
+the current top of the kill-ring. If the kill-ring is empty, a new
+entry is pushed..
+ at end deffn
+
+ at deffn {generic function} rotate-yank-position kill-ring &optional times
+Moves the yank point associated with a kill-ring one or times many positions
+away from the start of ring position. If times is greater than the current length
+then the cursor will wrap to the start of ring position and continue rotating.
+ at end deffn
+
+ at deffn {generic function} reset-yank-position kill-ring
+Moves the current position of the yank point associated with a kill ring back to
+the start of ring position.
+ at end deffn
+
+ at deffn {generic function} kill-ring-yank kill-ring &optional reset
+Returns the vector of objects currently pointed to by the cursor. If reset is T, then a
+call to reset-yank-position is called before the object is yanked. The default for reset
+is NIL.
+ at end deffn
+
@node Index
@unnumbered Index
More information about the Climacs-cvs
mailing list