home *** CD-ROM | disk | FTP | other *** search
- x-gateway: rodan.UU.NET from bug-lucid-emacs to alt.lucid-emacs.bug; Wed, 27 Jan 1993 17:53:46 EST
- Date: Wed, 27 Jan 1993 18:29:48 +0100
- From: Guido.Bosch%loria.fr@lucid.com (Guido Bosch)
- Message-ID: <9301271729.AA08635@moebius.loria.fr>
- Subject: Re: vm search bug
- Reply-To: bosch%loria.fr@lucid.com (Guido Bosch)
- Newsgroups: alt.lucid-emacs.bug
- Path: sparky!uunet!wendy-fate.uu.net!bug-lucid-emacs
- Sender: bug-lucid-emacs-request@lucid.com
- Lines: 261
-
- My guess that the vm search bug is due to a modification of the
- isearch package was right. Here is the patch that fixes it.
-
- Apply it with
-
- patch < vm-search-patch2
-
- in the vm directory and byte compile the file vm-search.el. Then tye
-
- rm vm.elc
- make VM
-
-
- This should do it.
-
- Guido
-
- -------------------------- vm-search-patch2 --------------------------
- *** vm-search.el.orig Wed Jan 27 15:36:21 1993
- --- vm-search.el Wed Jan 27 18:07:58 1993
- ***************
- *** 80,88 ****
- (set-window-hscroll (selected-window) 0))
- (other-window 1))
- (goto-char found-point)))))
- ! (let ((char (if quit-flag
- ?\C-g
- ! (read-char))))
- (setq quit-flag nil adjusted nil)
- ;; Meta character means exit search.
- (cond ((and (>= char 128)
- --- 80,90 ----
- (set-window-hscroll (selected-window) 0))
- (other-window 1))
- (goto-char found-point)))))
- ! (let* ((char (if quit-flag
- ?\C-g
- ! (read-char)))
- ! (isearch-cmd (lookup-key isearch-mode-map char)))
- !
- (setq quit-flag nil adjusted nil)
- ;; Meta character means exit search.
- (cond ((and (>= char 128)
- ***************
- *** 89,101 ****
- search-exit-option)
- (setq unread-command-event (character-to-event char))
- (throw 'search-done t))
- ! ((eq char search-exit-char)
- ;; Esc means exit search normally.
- ;; Except, if first thing typed, it means do nonincremental
- (if (= 0 (length search-string))
- (vm-nonincremental-search forward regexp))
- (throw 'search-done t))
- ! ((= char ?\C-g)
- ;; ^G means the user tried to quit.
- (ding)
- (discard-input)
- --- 91,103 ----
- search-exit-option)
- (setq unread-command-event (character-to-event char))
- (throw 'search-done t))
- ! ((eq isearch-cmd 'isearch-exit)
- ;; Esc means exit search normally.
- ;; Except, if first thing typed, it means do nonincremental
- (if (= 0 (length search-string))
- (vm-nonincremental-search forward regexp))
- (throw 'search-done t))
- ! ((eq isearch-cmd 'isearch-abort)
- ;; ^G means the user tried to quit.
- (ding)
- (discard-input)
- ***************
- *** 108,116 ****
- ;; If search is failing, rub out until it is once more
- ;; successful.
- (while (not success) (vm-isearch-pop))))
- ! ((or (eq char search-repeat-char)
- ! (eq char search-reverse-char))
- ! (if (eq forward (eq char search-repeat-char))
- ;; C-s in forward or C-r in reverse.
- (if (equal search-string "")
- ;; If search string is empty, use last one.
- --- 110,120 ----
- ;; If search is failing, rub out until it is once more
- ;; successful.
- (while (not success) (vm-isearch-pop))))
- !
- ! ((or (eq isearch-cmd 'isearch-repeat-forward)
- ! (eq isearch-cmd 'isearch-repeat-backward))
- ! (if (eq forward
- ! (eq isearch-cmd 'isearch-repeat-forward))
- ;; C-s in forward or C-r in reverse.
- (if (equal search-string "")
- ;; If search string is empty, use last one.
- ***************
- *** 122,128 ****
- search-string ""))
- ;; If already have what to search for, repeat it.
- (or success
- ! (progn (goto-char (if forward (point-min) (point-max)))
- (setq wrapped t))))
- ;; C-s in reverse or C-r in forward, change direction.
- (setq forward (not forward)))
- --- 126,133 ----
- search-string ""))
- ;; If already have what to search for, repeat it.
- (or success
- ! (progn (goto-char (if forward (point-min)
- ! (point-max)))
- (setq wrapped t))))
- ;; C-s in reverse or C-r in forward, change direction.
- (setq forward (not forward)))
- ***************
- *** 131,137 ****
- (or (equal search-string "")
- (vm-isearch-search))
- (vm-isearch-push-state))
- ! ((= char search-delete-char)
- ;; Rubout means discard last input item and move point
- ;; back. If buffer is empty, just beep.
- (if (null (cdr cmds))
- --- 136,142 ----
- (or (equal search-string "")
- (vm-isearch-search))
- (vm-isearch-push-state))
- ! ((eq isearch-cmd 'isearch-delete-char)
- ;; Rubout means discard last input item and move point
- ;; back. If buffer is empty, just beep.
- (if (null (cdr cmds))
- ***************
- *** 138,145 ****
- (ding)
- (vm-isearch-pop)))
- (t
- ! (cond ((or (eq char search-yank-word-char)
- ! (eq char search-yank-line-char))
- ;; ^W means gobble next word from buffer.
- ;; ^Y means gobble rest of line from buffer.
- (let ((word (save-excursion
- --- 143,150 ----
- (ding)
- (vm-isearch-pop)))
- (t
- ! (cond ((or (eq isearch-cmd 'isearch-yank-word)
- ! (eq isearch-cmd 'isearch-yank-line))
- ;; ^W means gobble next word from buffer.
- ;; ^Y means gobble rest of line from buffer.
- (let ((word (save-excursion
- ***************
- *** 148,154 ****
- (buffer-substring
- (point)
- (save-excursion
- ! (if (eq char search-yank-line-char)
- (end-of-line)
- (forward-word 1))
- (point))))))
- --- 153,159 ----
- (buffer-substring
- (point)
- (save-excursion
- ! (if (eq isearch-cmd 'isearch-yank-line)
- (end-of-line)
- (forward-word 1))
- (point))))))
- ***************
- *** 160,166 ****
- ;; Any other control char =>
- ;; unread it and exit the search normally.
- ((and search-exit-option
- ! (/= char search-quote-char)
- (or (= char ?\177)
- (and (< char ? ) (/= char ?\t) (/= char ?\r))))
- (setq unread-command-event (character-to-event char))
- --- 165,171 ----
- ;; Any other control char =>
- ;; unread it and exit the search normally.
- ((and search-exit-option
- ! (not (eq isearch-cmd 'isearch-quote-char))
- (or (= char ?\177)
- (and (< char ? ) (/= char ?\t) (/= char ?\r))))
- (setq unread-command-event (character-to-event char))
- ***************
- *** 168,174 ****
- (t
- ;; Any other character => add it to the
- ;; search string and search.
- ! (cond ((= char search-quote-char)
- (setq char (read-quoted-char
- (vm-isearch-message t))))
- ((= char ?\r)
- --- 173,179 ----
- (t
- ;; Any other character => add it to the
- ;; search string and search.
- ! (cond ((eq isearch-cmd 'isearch-quote-char)
- (setq char (read-quoted-char
- (vm-isearch-message t))))
- ((= char ?\r)
- ***************
- *** 189,195 ****
- ;; Go back to place last successful search started
- ;; or to the last ^S/^R (barrier), whichever is nearer.
- (and regexp success cmds
- ! (cond ((memq char '(?* ??))
- (setq adjusted t)
- (let ((cs (nth (if forward
- 5 ; other-end
- --- 194,200 ----
- ;; Go back to place last successful search started
- ;; or to the last ^S/^R (barrier), whichever is nearer.
- (and regexp success cmds
- ! (cond ((eq isearch-cmd 'isearch-*-char)
- (setq adjusted t)
- (let ((cs (nth (if forward
- 5 ; other-end
- ***************
- *** 202,208 ****
- (if forward
- (max cs barrier)
- (min cs barrier)))))
- ! ((eq char ?\|)
- (setq adjusted t)
- (goto-char barrier))))
- ;; In reverse regexp search, adding a character at
- --- 207,213 ----
- (if forward
- (max cs barrier)
- (min cs barrier)))))
- ! ((eq isearch-cmd 'isearch-|-char)
- (setq adjusted t)
- (goto-char barrier))))
- ;; In reverse regexp search, adding a character at
- ***************
- *** 337,348 ****
- (message "%s" message)
- ;; Read 1 char and switch to word search if it is ^W.
- (setq char (read-char))
- ! (if (eq char search-yank-word-char)
- (setq message (if forward "VM Word search: " "VM Word search backward: "))
- ;; Otherwise let that 1 char be part of the search string.
- (setq unread-command-event (character-to-event char)))
- (setq function
- ! (if (eq char search-yank-word-char)
- (if forward 'word-search-forward 'word-search-backward)
- (if regexp
- (if forward 're-search-forward 're-search-backward)
- --- 342,353 ----
- (message "%s" message)
- ;; Read 1 char and switch to word search if it is ^W.
- (setq char (read-char))
- ! (if (eq (lookup-key isearch-mode-map char) 'isearch-yank-word)
- (setq message (if forward "VM Word search: " "VM Word search backward: "))
- ;; Otherwise let that 1 char be part of the search string.
- (setq unread-command-event (character-to-event char)))
- (setq function
- ! (if (eq (lookup-key isearch-mode-map char) 'isearch-yank-word)
- (if forward 'word-search-forward 'word-search-backward)
- (if regexp
- (if forward 're-search-forward 're-search-backward)
-