Update of /project/climacs/cvsroot/climacs In directory common-lisp.net:/tmp/cvs-serv30608
Modified Files: gui.lisp packages.lisp pane.lisp Log Message: Fixed bad isearch behaviour when searching after a failure Date: Sun Jan 30 14:17:31 2005 Author: mvilleneuve
Index: climacs/gui.lisp diff -u climacs/gui.lisp:1.104 climacs/gui.lisp:1.105 --- climacs/gui.lisp:1.104 Sun Jan 30 11:56:53 2005 +++ climacs/gui.lisp Sun Jan 30 14:17:30 2005 @@ -1031,7 +1031,8 @@ (list (make-instance 'isearch-state :search-string "" :search-mark (clone-mark point) - :search-forward-p forwardp))) + :search-forward-p forwardp + :search-success-p t))) (simple-command-loop 'isearch-climacs-table (isearch-mode pane) ((setf (isearch-mode pane) nil))))) @@ -1047,18 +1048,19 @@ mark2 string :test #'object-equal))) - (cond (success - (setf (offset point) (offset mark2) - (offset mark) (if forwardp - (- (offset mark2) (length string)) - (+ (offset mark2) (length string)))) - (push (make-instance 'isearch-state - :search-string string - :search-mark mark - :search-forward-p forwardp) - (isearch-states pane))) - (t - (beep)))))) + (when success + (setf (offset point) (offset mark2) + (offset mark) (if forwardp + (- (offset mark2) (length string)) + (+ (offset mark2) (length string))))) + (push (make-instance 'isearch-state + :search-string string + :search-mark mark + :search-forward-p forwardp + :search-success-p success) + (isearch-states pane)) + (unless success + (beep)))))
(define-named-command com-isearch-mode-forward () (isearch-command-loop (current-window) t)) @@ -1084,6 +1086,9 @@ (beep)) (t (pop (isearch-states pane)) + (loop until (endp (rest (isearch-states pane))) + until (search-success-p (first (isearch-states pane))) + do (pop (isearch-states pane))) (let ((state (first (isearch-states pane)))) (setf (offset (point pane)) (if (search-forward-p state)
Index: climacs/packages.lisp diff -u climacs/packages.lisp:1.43 climacs/packages.lisp:1.44 --- climacs/packages.lisp:1.43 Sun Jan 30 11:56:53 2005 +++ climacs/packages.lisp Sun Jan 30 14:17:31 2005 @@ -111,7 +111,8 @@ #:tab-space-count #:indent-tabs-mode #:auto-fill-mode #:auto-fill-column - #:isearch-state #:search-string #:search-mark #:search-forward-p + #:isearch-state #:search-string #:search-mark + #:search-forward-p #:search-success-p #:isearch-mode #:isearch-states #:isearch-previous-string #:query-replace-state #:string1 #:string2 #:query-replace-mode
Index: climacs/pane.lisp diff -u climacs/pane.lisp:1.15 climacs/pane.lisp:1.16 --- climacs/pane.lisp:1.15 Wed Jan 26 14:49:47 2005 +++ climacs/pane.lisp Sun Jan 30 14:17:31 2005 @@ -142,7 +142,8 @@ (defclass isearch-state () ((search-string :initarg :search-string :accessor search-string) (search-mark :initarg :search-mark :accessor search-mark) - (search-forward-p :initarg :search-forward-p :accessor search-forward-p))) + (search-forward-p :initarg :search-forward-p :accessor search-forward-p) + (search-success-p :initarg :search-success-p :accessor search-success-p)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;