From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.devel Subject: Re: highlight failed part of isearch input Date: Sun, 15 Jul 2007 02:05:40 +0300 Organization: JURTA Message-ID: <87d4yu7ezr.fsf@jurta.org> References: <877ip52nzw.fsf@jurta.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: sea.gmane.org 1184456703 22616 80.91.229.12 (14 Jul 2007 23:45:03 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sat, 14 Jul 2007 23:45:03 +0000 (UTC) Cc: drew.adams@oracle.com, emacs-devel@gnu.org To: rms@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Jul 15 01:45:00 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1I9rIJ-0008M9-6a for ged-emacs-devel@m.gmane.org; Sun, 15 Jul 2007 01:44:59 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I9rII-0003k0-3L for ged-emacs-devel@m.gmane.org; Sat, 14 Jul 2007 19:44:58 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I9rIE-0003jR-JD for emacs-devel@gnu.org; Sat, 14 Jul 2007 19:44:54 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I9rID-0003is-0A for emacs-devel@gnu.org; Sat, 14 Jul 2007 19:44:54 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I9rIC-0003ip-PX for emacs-devel@gnu.org; Sat, 14 Jul 2007 19:44:52 -0400 Original-Received: from relay02.kiev.sovam.com ([62.64.120.197]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1I9rI5-0001co-Dv; Sat, 14 Jul 2007 19:44:46 -0400 Original-Received: from [83.170.232.243] (helo=smtp.svitonline.com) by relay02.kiev.sovam.com with esmtp (Exim 4.67) (envelope-from ) id 1I9rHm-000BDB-2M; Sun, 15 Jul 2007 02:44:26 +0300 In-Reply-To: (Richard Stallman's message of "Fri\, 13 Jul 2007 14\:38\:49 -0400") User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1.50 (gnu/linux) X-Scanner-Signature: d3dfc5a0b247ea81d48b6a940fe6235f X-DrWeb-checked: yes X-SpamTest-Envelope-From: juri@jurta.org X-SpamTest-Group-ID: 00000000 X-SpamTest-Header: Not Detected X-SpamTest-Info: Profiles 1219 [July 15 2007] X-SpamTest-Info: helo_type=3 X-SpamTest-Method: none X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release X-detected-kernel: FreeBSD 4.8-5.1 (or MacOS X 10.2-10.3) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:74800 Archived-At: > I think we should try to find a proper place in low-level isearch > functions to fix such behavior, because for users it is confusing. > > I agree. Can you work on it? The patch below fixes `isearch-del-char' to work correctly in all reported cases. It failed because `isearch-search-and-update' works only for adding characters to the successful search (it doesn't call `isearch-search' for unsuccessful non-regexp search). A new solution is to set search starting point to the isearch-other-end and start the search from this position and try to find the remaining string again. Index: lisp/isearch.el =================================================================== RCS file: /sources/emacs/emacs/lisp/isearch.el,v retrieving revision 1.298 diff -c -r1.298 isearch.el *** lisp/isearch.el 9 Jul 2007 14:45:01 -0000 1.298 --- lisp/isearch.el 14 Jul 2007 22:59:45 -0000 *************** *** 1260,1269 **** (ding) (setq isearch-string (substring isearch-string 0 (- (or arg 1))) isearch-message (mapconcat 'isearch-text-char-description ! isearch-string "") ! ;; Don't move cursor in reverse search. ! isearch-yank-flag t)) ! (isearch-search-and-update)) (defun isearch-yank-string (string) "Pull STRING into search string." --- 1284,1296 ---- (ding) (setq isearch-string (substring isearch-string 0 (- (or arg 1))) isearch-message (mapconcat 'isearch-text-char-description ! isearch-string ""))) ! ;; Use the isearch-other-end as new starting point to be able ! ;; to find the remaining part of the search string again. ! (if isearch-other-end (goto-char isearch-other-end)) ! (isearch-search) ! (isearch-push-state) ! (isearch-update)) (defun isearch-yank-string (string) "Pull STRING into search string." -- Juri Linkov http://www.jurta.org/emacs/