From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: spaces in isearch Date: Sat, 20 Nov 2004 20:10:22 -0500 Message-ID: Reply-To: rms@gnu.org NNTP-Posting-Host: deer.gmane.org X-Trace: sea.gmane.org 1100999587 29554 80.91.229.6 (21 Nov 2004 01:13:07 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 21 Nov 2004 01:13:07 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Nov 21 02:13:03 2004 Return-path: Original-Received: from lists.gnu.org ([199.232.76.165]) by deer.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 1CVgHm-0002Xk-00 for ; Sun, 21 Nov 2004 02:13:02 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CVgQl-0007X5-0h for ged-emacs-devel@m.gmane.org; Sat, 20 Nov 2004 20:22:19 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1CVgPy-0007EM-5w for emacs-devel@gnu.org; Sat, 20 Nov 2004 20:21:30 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1CVgPv-0007Cc-4j for emacs-devel@gnu.org; Sat, 20 Nov 2004 20:21:27 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1CVgPu-0007Bv-Qo for emacs-devel@gnu.org; Sat, 20 Nov 2004 20:21:26 -0500 Original-Received: from [199.232.76.164] (helo=fencepost.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.34) id 1CVgGk-00089l-6T for emacs-devel@gnu.org; Sat, 20 Nov 2004 20:11:58 -0500 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.34) id 1CVgFC-00006L-G2; Sat, 20 Nov 2004 20:10:22 -0500 Original-To: emacs-devel@gnu.org 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: main.gmane.org gmane.emacs.devel:30132 X-Report-Spam: http://spam.gmane.org/gmane.emacs.devel:30132 I wrote these changes to isearch.el that take advantage of the new search feature I just installed. It fixes the bug, but has a drawback: C-q SPC would no longer work as a way to search for a literal space. One would need to write [ ]. This is actually more logical, but some users might be accustomed to C-q SPC. What do people think? *** isearch.el 12 Oct 2004 04:45:09 -0400 1.242 --- isearch.el 20 Nov 2004 09:22:33 -0500 *************** *** 112,117 **** --- 112,119 ---- (defcustom search-whitespace-regexp "\\(?:\\s-+\\)" "*If non-nil, regular expression to match a sequence of whitespace chars. This applies to regular expression incremental search. + When you put a space or spaces in the incremental regexp, it stands for + this, unless it is inside of a regexp construct such as [...] or *, + or ?. You might want to use something like \"\\\\(?:[ \\t\\r\\n]+\\\\)\" instead. In the Customization buffer, that is `\\(?:[' followed by a space, a tab, a carriage return (control-M), a newline, and `]+\\)'." *************** *** 260,267 **** (define-key map "\r" 'isearch-exit) (define-key map "\C-j" 'isearch-printing-char) (define-key map "\t" 'isearch-printing-char) - (define-key map " " 'isearch-whitespace-chars) - (define-key map [?\S-\ ] 'isearch-whitespace-chars) (define-key map "\C-w" 'isearch-yank-word-or-char) (define-key map "\M-\C-w" 'isearch-del-char) --- 262,267 ---- *************** *** 485,491 **** Do incremental search forward for regular expression. With a prefix argument, do a regular string search instead. Like ordinary incremental search except that your input ! is treated as a regexp. See \\[isearch-forward] for more info." (interactive "P\np") (isearch-mode t (null not-regexp) nil (not no-recursive-edit))) --- 485,496 ---- Do incremental search forward for regular expression. With a prefix argument, do a regular string search instead. Like ordinary incremental search except that your input ! is treated as a regexp. See \\[isearch-forward] for more info. ! ! In regexp incremental searches, a space or spaces normally matches ! any whitespace (the variable `search-whitespace-regexp' controls ! precisely what that means). If you want to search for a literal space ! and nothing else, enter `[ ]'." (interactive "P\np") (isearch-mode t (null not-regexp) nil (not no-recursive-edit))) *************** *** 1704,1725 **** (isearch-process-search-multibyte-characters char) (isearch-process-search-char char))))) - (defun isearch-whitespace-chars () - "Match all whitespace chars, if in regexp mode. - If you want to search for just a space, type \\\\[isearch-quote-char] SPC." - (interactive) - (if isearch-regexp - (if (and search-whitespace-regexp (not isearch-within-brackets) - (not isearch-invalid-regexp)) - (isearch-process-search-string search-whitespace-regexp " ") - (isearch-printing-char)) - (progn - ;; This way of doing word search doesn't correctly extend current search. - ;; (setq isearch-word t) - ;; (setq isearch-adjusted t) - ;; (goto-char isearch-barrier) - (isearch-printing-char)))) - (defun isearch-process-search-char (char) ;; Append the char to the search string, update the message and re-search. (isearch-process-search-string --- 1709,1714 ---- *************** *** 1960,1965 **** --- 1949,1955 ---- (let ((inhibit-point-motion-hooks search-invisible) (inhibit-quit nil) (case-fold-search isearch-case-fold-search) + (search-spaces-regexp search-whitespace-regexp) (retry t)) (if isearch-regexp (setq isearch-invalid-regexp nil)) (setq isearch-within-brackets nil) *************** *** 2373,2379 **** (defun isearch-lazy-highlight-search () "Search ahead for the next or previous match, for lazy highlighting. Attempt to do the search exactly the way the pending isearch would." ! (let ((case-fold-search isearch-case-fold-search)) (funcall (isearch-search-fun) isearch-string (if isearch-forward --- 2363,2370 ---- (defun isearch-lazy-highlight-search () "Search ahead for the next or previous match, for lazy highlighting. Attempt to do the search exactly the way the pending isearch would." ! (let ((case-fold-search isearch-case-fold-search) ! (search-spaces-regexp search-whitespace-regexp)) (funcall (isearch-search-fun) isearch-string (if isearch-forward