[climacs-cvs] CVS update: climacs/syntax.lisp

Robert Strandh rstrandh at common-lisp.net
Mon Jan 3 15:07:10 UTC 2005


Update of /project/climacs/cvsroot/climacs
In directory common-lisp.net:/tmp/cvs-serv19246

Modified Files:
	syntax.lisp 
Log Message:
Redisplay is much faster.

Date: Mon Jan  3 16:07:09 2005
Author: rstrandh

Index: climacs/syntax.lisp
diff -u climacs/syntax.lisp:1.18 climacs/syntax.lisp:1.19
--- climacs/syntax.lisp:1.18	Mon Jan  3 13:21:20 2005
+++ climacs/syntax.lisp	Mon Jan  3 16:07:09 2005
@@ -265,10 +265,19 @@
     (with-slots (top bot scan cache cursor-x cursor-y) syntax
        (position-window pane syntax)
        (compute-cache pane syntax)
-       (setf scan (offset top))
-       (loop for id from 0 below (nb-elements cache)
-	     do (updating-output (pane :unique-id id)
-		  (display-line pane syntax (element* cache id))))
+       (loop with start-offset = (offset top)
+	     for id from 0 below (nb-elements cache)
+	     do (setf scan start-offset)
+		(updating-output
+		    (pane :unique-id id
+			  :cache-value (if (<= start-offset
+					       (offset (point pane))
+					       (+ start-offset (length (element* cache id))))
+					   (cons nil nil)
+					   (element* cache id))
+			  :cache-test #'eq)
+		  (display-line pane syntax (element* cache id)))
+		(incf start-offset (1+ (length (element* cache id)))))
        (when (mark= scan (point pane))
 	 (multiple-value-bind (x y) (stream-cursor-position pane)
 	   (setf cursor-x x




More information about the Climacs-cvs mailing list