/[climacs]/climacs/text-syntax.lisp
ViewVC logotype

Diff of /climacs/text-syntax.lisp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by rstrandh, Sat Jan 15 19:50:43 2005 UTC revision 1.3 by rstrandh, Sat Jan 15 21:35:53 2005 UTC
# Line 90  Line 90 
90                                       :buffer buffer :offset offset))                                       :buffer buffer :offset offset))
91                           (incf pos1))                           (incf pos1))
92                          (t nil)))))))                          (t nil)))))))
93    
94    (defgeneric beginning-of-paragraph (mark text-syntax))
95    
96    (defmethod beginning-of-paragraph (mark (syntax text-syntax))
97      (with-slots (paragraphs) syntax
98         (let* ((nb-paragraphs (nb-elements paragraphs))
99                (pos2 nb-paragraphs)
100                (pos1 0)
101                (offset (offset mark)))
102           (loop until (= pos1 pos2)
103                 do (if (mark>= (element* paragraphs (floor (+ pos1 pos2) 2)) offset)
104                        (setf pos2 (floor (+ pos1 pos2) 2))
105                        (setf pos1 (floor (+ pos1 1 pos2) 2))))
106           (when (> pos1 0)
107             (setf (offset mark)
108                   (if (typep (element* paragraphs (1- pos1)) 'right-sticky-mark)
109                       (offset (element* paragraphs (- pos1 2)))
110                       (offset (element* paragraphs (1- pos1)))))))))
111    
112    (defmethod end-of-paragraph (mark (syntax text-syntax))
113      (with-slots (paragraphs) syntax
114         (let* ((nb-paragraphs (nb-elements paragraphs))
115                (pos2 nb-paragraphs)
116                (pos1 0)
117                (offset (offset mark)))
118           (loop until (= pos1 pos2)
119                 do (if (mark<= (element* paragraphs (floor (+ pos1 pos2) 2)) offset)
120                        (setf pos1 (floor (+ pos1 1 pos2) 2))
121                        (setf pos2 (floor (+ pos1 pos2) 2))))
122           (when (< pos1 nb-paragraphs)
123             (setf (offset mark)
124                   (if (typep (element* paragraphs pos1) 'left-sticky-mark)
125                       (offset (element* paragraphs (1+ pos1)))
126                       (offset (element* paragraphs pos1))))))))

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.5