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: Calling occur from within isearch Date: Sat, 24 Nov 2007 19:45:05 +0200 Organization: JURTA Message-ID: <871waf7ikx.fsf@jurta.org> References: <47448DB2.60402@gmail.com> <87hcjf2wot.fsf@jurta.org> <871wairv6n.fsf@jurta.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1195927180 22189 80.91.229.12 (24 Nov 2007 17:59:40 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 24 Nov 2007 17:59:40 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Nov 24 18:59:48 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 1IvzIA-0005Ei-C2 for ged-emacs-devel@m.gmane.org; Sat, 24 Nov 2007 18:59:46 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IvzHv-0006m4-RU for ged-emacs-devel@m.gmane.org; Sat, 24 Nov 2007 12:59:31 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IvzHr-0006iy-QZ for emacs-devel@gnu.org; Sat, 24 Nov 2007 12:59:27 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IvzHp-0006fp-Vm for emacs-devel@gnu.org; Sat, 24 Nov 2007 12:59:27 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IvzHo-0006do-GP for emacs-devel@gnu.org; Sat, 24 Nov 2007 12:59:25 -0500 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 1IvzHn-0005ZU-KO for emacs-devel@gnu.org; Sat, 24 Nov 2007 12:59:23 -0500 Original-Received: from [83.170.232.243] (helo=smtp.svitonline.com) by relay02.kiev.sovam.com with esmtp (Exim 4.67) (envelope-from ) id 1IvzHh-0003ey-Rn for emacs-devel@gnu.org; Sat, 24 Nov 2007 19:59:20 +0200 In-Reply-To: ("Johan =?iso-8859-1?Q?Bockg=E5rd=22's?= message of "Fri, 23 Nov 2007 02:05:28 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.50 (gnu/linux) X-Scanner-Signature: b46f4584ea35a5bfe65e3be67b2b2352 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 1826 [Nov 24 2007] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {HEADERS: header Content-Type found without required header Content-Transfer-Encoding} X-SpamTest-Method: none X-SpamTest-Rate: 19 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: by monty-python.gnu.org: 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:84064 Archived-At: > Occur already does the "upper-case implies case-sensitive" step. The > interesting case is where this should not be done--that is when the > search string is mixed case, and the user explicitly turns off > case-sensitivity with M-c (this is the situation where > isearch-case-fold-search is `yes'). > > So the idea is more like > > ;; Except that this doesn't really work, since occur doesn't care > ;; about `search-upper-case'. > (let ((case-fold-search isearch-case-fold-search) > (search-upper-case nil)) > (occur regexp nlines)) > > Maybe upper-case input should only have magic effects in > interactive calls. > > (occur REGEXP &optional NLINES UPPER-CASE-IMPLIES-CASE-SENSITIVE) Since occur uses `isearch-no-upper-case-p' it seems reasonable for it to respect the value of `search-upper-case' as well. Do you see any flaw in the following patch? Index: lisp/replace.el =================================================================== RCS file: /sources/emacs/emacs/lisp/replace.el,v retrieving revision 1.263 diff -c -r1.263 replace.el *** lisp/replace.el 22 Nov 2007 03:01:36 -0000 1.263 --- lisp/replace.el 24 Nov 2007 17:42:32 -0000 *************** *** 1030,1037 **** It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. ! If REGEXP contains upper case characters (excluding those preceded by `\\'), ! the matching is case-sensitive." (interactive (occur-read-primary-args)) (occur-1 regexp nlines (list (current-buffer)))) --- 1030,1037 ---- It serves as a menu to find any of the occurrences in this buffer. \\\\[describe-mode] in that buffer will explain how. ! If REGEXP contains upper case characters (excluding those preceded by `\\') ! and `search-upper-case' is non-nil, the matching is case-sensitive." (interactive (occur-read-primary-args)) (occur-1 regexp nlines (list (current-buffer)))) *************** *** 1119,1126 **** (let ((count (occur-engine regexp active-bufs occur-buf (or nlines list-matching-lines-default-context-lines) ! (and case-fold-search ! (isearch-no-upper-case-p regexp t)) list-matching-lines-buffer-name-face nil list-matching-lines-face (not (eq occur-excluded-properties t))))) --- 1119,1127 ---- (let ((count (occur-engine regexp active-bufs occur-buf (or nlines list-matching-lines-default-context-lines) ! (if (and (eq case-fold-search t) search-upper-case) ! (isearch-no-upper-case-p regexp t) ! case-fold-search) list-matching-lines-buffer-name-face nil list-matching-lines-face (not (eq occur-excluded-properties t))))) Index: lisp/isearch.el =================================================================== RCS file: /sources/emacs/emacs/lisp/isearch.el,v retrieving revision 1.306 diff -c -r1.306 isearch.el *** lisp/isearch.el 10 Nov 2007 23:03:24 -0000 1.306 --- lisp/isearch.el 24 Nov 2007 17:44:57 -0000 *************** *** 1256,1265 **** --- 1257,1273 ---- (interactive) (isearch-query-replace t)) + (defun isearch-occur (regexp &optional nlines) + "Run `occur' with regexp to search from the current search string. + Interactively, REGEXP is the current search regexp or a quoted search + string. NLINES has the same meaning as in `occur'." + (interactive + (list + (if isearch-regexp isearch-string (regexp-quote isearch-string)) + (if current-prefix-arg (prefix-numeric-value current-prefix-arg)))) + (let ((case-fold-search isearch-case-fold-search)) + (occur regexp nlines))) + (defun isearch-delete-char () "Discard last input item and move point back. -- Juri Linkov http://www.jurta.org/emacs/