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

Robert Strandh rstrandh at common-lisp.net
Fri Mar 18 07:49:19 UTC 2005


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

Modified Files:
	html-syntax.lisp packages.lisp syntax.lisp 
Log Message:
Added setf methods for offset of parse-trees.  Either a numerical
offset can be given, in which case, the start-mark must exist (since
we don't know the buffer), or else a mark can be given, in which case
it is cloned. 

Removed references to start-mark from html-syntax.lisp, and removed it
from the export list of the climacs-syntax package. 


Date: Fri Mar 18 08:49:18 2005
Author: rstrandh

Index: climacs/html-syntax.lisp
diff -u climacs/html-syntax.lisp:1.18 climacs/html-syntax.lisp:1.19
--- climacs/html-syntax.lisp:1.18	Thu Mar 17 06:07:12 2005
+++ climacs/html-syntax.lisp	Fri Mar 18 08:49:17 2005
@@ -88,7 +88,7 @@
 	  :<head> <head> :title title :</head> </head>)))
 
 (defun word-is (word string)
-  (string-equal (coerce (region-to-sequence (start-mark word) (end-offset word)) 'string)
+  (string-equal (coerce (buffer-sequence (buffer word) (start-offset word) (end-offset word)) 'string)
 		string))
 
 (defmacro define-start-tag (name string)
@@ -309,12 +309,12 @@
 		     :grammar *html-grammar*
 		     :target 'html))
      (setf lexer (make-instance 'html-lexer :buffer (buffer syntax)))
-     (let ((m (clone-mark (low-mark buffer) :left)))
+     (let ((m (clone-mark (low-mark buffer) :left))
+	   (lexeme (make-instance 'start-lexeme :state (initial-state parser))))
        (setf (offset m) 0)
-       (insert-lexeme lexer 0 (make-instance 'start-lexeme
-				 :start-mark m
-				 :size 0
-				 :state (initial-state parser))))))
+       (setf (start-offset lexeme) m
+	     (end-offset lexeme) 0)
+       (insert-lexeme lexer 0 lexeme))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;
@@ -388,8 +388,9 @@
       (with-slots (ink face) entity
 	 (setf ink (medium-ink (sheet-medium pane))
 	       face (text-style-face (medium-text-style (sheet-medium pane))))
-	 (present (coerce (region-to-sequence (start-mark entity)
-					      (end-offset entity))
+	 (present (coerce (buffer-sequence (buffer syntax)
+					   (start-offset entity)
+					   (end-offset entity))
 			  'string)
 		  'string
 		  :stream pane)))))


Index: climacs/packages.lisp
diff -u climacs/packages.lisp:1.58 climacs/packages.lisp:1.59
--- climacs/packages.lisp:1.58	Tue Mar 15 13:51:39 2005
+++ climacs/packages.lisp	Fri Mar 18 08:49:17 2005
@@ -96,7 +96,6 @@
 	   #:parser #:initial-state
 	   #:advance-parse
 	   #:parse-tree #:start-offset #:end-offset
-	   #:start-mark ; FIXME remove this
 	   #:lexer #:nb-lexemes #:lexeme #:insert-lexeme
 	   #:incremental-lexer #:next-lexeme
 	   #:delete-invalid-lexemes #:inter-lexeme-object-p


Index: climacs/syntax.lisp
diff -u climacs/syntax.lisp:1.40 climacs/syntax.lisp:1.41
--- climacs/syntax.lisp:1.40	Wed Mar 16 07:12:10 2005
+++ climacs/syntax.lisp	Fri Mar 18 08:49:17 2005
@@ -97,12 +97,38 @@
     (when mark
       (offset mark))))
 
+(defmethod (setf start-offset) ((offset number) (tree parse-tree))
+  (let ((mark (start-mark tree)))
+    (assert (not (null mark)))
+    (setf (offset mark) offset)))
+
+(defmethod (setf start-offset) ((offset mark) (tree parse-tree))
+  (with-slots (start-mark) tree
+     (if (null start-mark)
+	 (setf start-mark (clone-mark offset))
+	 (setf (offset start-mark) (offset offset)))))
+
 (defgeneric end-offset (parse-tree))
 
 (defmethod end-offset ((tree parse-tree))
   (with-slots (start-mark size) tree
      (when start-mark
        (+ (offset start-mark) size))))
+
+(defmethod (setf end-offset) ((offset number) (tree parse-tree))
+  (with-slots (start-mark size) tree
+     (assert (not (null start-mark)))
+     (setf size (- offset (offset start-mark)))))
+
+(defmethod (setf end-offset) ((offset mark) (tree parse-tree))
+  (with-slots (start-mark size) tree
+     (assert (not (null start-mark)))
+     (setf size (- (offset offset) (offset start-mark)))))
+
+(defmethod buffer ((tree parse-tree))
+  (let ((start-mark (start-mark tree)))
+    (when start-mark
+      (buffer start-mark))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;




More information about the Climacs-cvs mailing list