
Update of /project/climacs/cvsroot/climacs In directory common-lisp.net:/tmp/cvs-serv12175 Modified Files: base-test.lisp base.lisp buffer-test.lisp Log Message: Changes to (un)tabify-*region methods, and corresponding tests. Initial tests for indent-line. Date: Sun Feb 6 01:03:26 2005 Author: abakic Index: climacs/base-test.lisp diff -u climacs/base-test.lisp:1.4 climacs/base-test.lisp:1.5 --- climacs/base-test.lisp:1.4 Sat Jan 29 23:23:08 2005 +++ climacs/base-test.lisp Sun Feb 6 01:03:26 2005 @@ -770,3 +770,107 @@ (buffer-sequence buffer 0 (size buffer)) (offset m)))) "Cli Ma Cs climacs" 9) + +(deftest standard-buffer-tabify-buffer-region.test-1 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "c l im acs") + (climacs-base::tabify-buffer-region buffer 0 (size buffer) 8) + (buffer-sequence buffer 0 (size buffer))) + "c l im acs") + +(deftest standard-buffer-tabify-buffer-region.test-2 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "c l im acs") + (climacs-base::tabify-buffer-region buffer 0 (size buffer) 8) + (buffer-sequence buffer 0 (size buffer))) + "c l im acs") + +(deftest standard-buffer-tabify-region.test-1 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "clim acs") + (let ((m1 (make-instance 'standard-left-sticky-mark + :buffer buffer :offset 3)) + (m2 (make-instance 'standard-right-sticky-mark + :buffer buffer :offset 7))) + (tabify-region m2 m1 4) + (buffer-sequence buffer 0 (size buffer)))) + "clim acs") + +(deftest standard-buffer-tabify-region.test-2 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "clim acs") + (let ((m1 (make-instance 'standard-right-sticky-mark + :buffer buffer :offset 3))) + (tabify-region 7 m1 4) + (buffer-sequence buffer 0 (size buffer)))) + "clim acs") + +(deftest standard-buffer-tabify-region.test-3 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "clim acs") + (let ((m1 (make-instance 'standard-left-sticky-mark + :buffer buffer :offset 7))) + (tabify-region 3 m1 4) + (buffer-sequence buffer 0 (size buffer)))) + "clim acs") + +(deftest standard-buffer-untabify-buffer-region.test-1 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "c l im acs") + (climacs-base::untabify-buffer-region buffer 0 (size buffer) 8) + (buffer-sequence buffer 0 (size buffer))) + "c l im acs") + +(deftest standard-buffer-untabify-buffer-region.test-2 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "c l im acs") + (climacs-base::untabify-buffer-region buffer 0 (size buffer) 8) + (buffer-sequence buffer 0 (size buffer))) + "c l im acs") + +(deftest standard-buffer-untabify-region.test-1 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "clim acs") + (let ((m1 (make-instance 'standard-left-sticky-mark + :buffer buffer :offset 3)) + (m2 (make-instance 'standard-right-sticky-mark + :buffer buffer :offset 5))) + (untabify-region m2 m1 4) + (buffer-sequence buffer 0 (size buffer)))) + "clim acs") + +(deftest standard-buffer-untabify-region.test-2 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "clim acs") + (let ((m1 (make-instance 'standard-right-sticky-mark + :buffer buffer :offset 3))) + (untabify-region 5 m1 4) + (buffer-sequence buffer 0 (size buffer)))) + "clim acs") + +(deftest standard-buffer-untabify-region.test-3 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 "clim acs") + (let ((m1 (make-instance 'standard-left-sticky-mark + :buffer buffer :offset 5))) + (untabify-region 3 m1 4) + (buffer-sequence buffer 0 (size buffer)))) + "clim acs") + +(deftest standard-buffer-indent-line.test-1 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 " climacs ") + (let ((m (make-instance 'standard-left-sticky-mark + :buffer buffer :offset 0))) + (indent-line m 4 nil) + (buffer-sequence buffer 0 (size buffer)))) + " climacs ") + +(deftest standard-buffer-indent-line.test-2 + (let ((buffer (make-instance 'standard-buffer))) + (insert-buffer-sequence buffer 0 " climacs ") + (let ((m (make-instance 'standard-right-sticky-mark + :buffer buffer :offset 0))) + (indent-line m 5 4) + (buffer-sequence buffer 0 (size buffer)))) + " climacs ") Index: climacs/base.lisp diff -u climacs/base.lisp:1.31 climacs/base.lisp:1.32 --- climacs/base.lisp:1.31 Sat Feb 5 08:04:03 2005 +++ climacs/base.lisp Sun Feb 6 01:03:26 2005 @@ -382,14 +382,23 @@ (defmethod tabify-region ((mark1 mark) (mark2 mark) tab-width) (assert (eq (buffer mark1) (buffer mark2))) - (tabify-buffer-region (buffer mark1) (offset mark1) (offset mark2) - tab-width)) - -(defmethod tabify-region ((offset integer) (mark mark) tab-width) - (tabify-buffer-region (buffer mark) offset (offset mark) tab-width)) - -(defmethod tabify-region ((mark mark) (offset integer) tab-width) - (tabify-buffer-region (buffer mark) (offset mark) offset tab-width)) + (let ((offset1 (offset mark1)) + (offset2 (offset mark2))) + (when (> offset1 offset2) + (rotatef offset1 offset2)) + (tabify-buffer-region (buffer mark1) offset1 offset2 tab-width))) + +(defmethod tabify-region ((offset1 integer) (mark2 mark) tab-width) + (let ((offset2 (offset mark2))) + (when (> offset1 offset2) + (rotatef offset1 offset2)) + (tabify-buffer-region (buffer mark2) offset1 offset2 tab-width))) + +(defmethod tabify-region ((mark1 mark) (offset2 integer) tab-width) + (let ((offset1 (offset mark1))) + (when (> offset1 offset2) + (rotatef offset1 offset2)) + (tabify-buffer-region (buffer mark1) offset1 offset2 tab-width))) (defun untabify-buffer-region (buffer offset1 offset2 tab-width) (loop for offset = offset1 then (1+ offset) @@ -411,14 +420,23 @@ (defmethod untabify-region ((mark1 mark) (mark2 mark) tab-width) (assert (eq (buffer mark1) (buffer mark2))) - (untabify-buffer-region (buffer mark1) (offset mark1) (offset mark2) - tab-width)) - -(defmethod untabify-region ((offset integer) (mark mark) tab-width) - (untabify-buffer-region (buffer mark) offset (offset mark) tab-width)) - -(defmethod untabify-region ((mark mark) (offset integer) tab-width) - (untabify-buffer-region (buffer mark) (offset mark) offset tab-width)) + (let ((offset1 (offset mark1)) + (offset2 (offset mark2))) + (when (> offset1 offset2) + (rotatef offset1 offset2)) + (untabify-buffer-region (buffer mark1) offset1 offset2 tab-width))) + +(defmethod untabify-region ((offset1 integer) (mark2 mark) tab-width) + (let ((offset2 (offset mark2))) + (when (> offset1 offset2) + (rotatef offset1 offset2)) + (untabify-buffer-region (buffer mark2) offset1 offset2 tab-width))) + +(defmethod untabify-region ((mark1 mark) (offset2 integer) tab-width) + (let ((offset1 (offset mark1))) + (when (> offset1 offset2) + (rotatef offset1 offset2)) + (untabify-buffer-region (buffer mark1) offset1 offset2 tab-width))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Index: climacs/buffer-test.lisp diff -u climacs/buffer-test.lisp:1.13 climacs/buffer-test.lisp:1.14 --- climacs/buffer-test.lisp:1.13 Sat Feb 5 22:34:43 2005 +++ climacs/buffer-test.lisp Sun Feb 6 01:03:26 2005 @@ -234,11 +234,14 @@ (let ((buffer (make-instance 'standard-buffer))) (insert-buffer-sequence buffer 0 "climacs") (let ((m (make-instance 'standard-left-sticky-mark - :buffer buffer :offset 3))) + :buffer buffer :offset 3)) + (m2 (make-instance 'standard-left-sticky-mark + :buffer buffer :offset 5))) (insert-sequence m "ClimacS") (and (= (size buffer) 14) (eq (buffer m) buffer) (= (offset m) 3) + (= (offset m2) 12) (buffer-sequence buffer 0 14)))) "cliClimacSmacs") @@ -246,11 +249,14 @@ (let ((buffer (make-instance 'standard-buffer))) (insert-buffer-sequence buffer 0 "climacs") (let ((m (make-instance 'standard-right-sticky-mark - :buffer buffer :offset 3))) + :buffer buffer :offset 3)) + (m2 (make-instance 'standard-right-sticky-mark + :buffer buffer :offset 5))) (insert-sequence m "ClimacS") (and (= (size buffer) 14) (eq (buffer m) buffer) (= (offset m) 10) + (= (offset m2) 12) (buffer-sequence buffer 0 14)))) "cliClimacSmacs")