From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#11378: 24.1.50; Suggestion: Let M-i in isearch cycle `search-invisible' Date: Wed, 29 May 2013 00:47:29 +0300 Organization: JURTA Message-ID: <87vc6222vi.fsf@mail.jurta.org> References: <87haw32hly.fsf@web.de> <87397m6oxf.fsf@mail.jurta.org> <87y5pcdzxx.fsf@mail.jurta.org> <874nqzgcuk.fsf@mail.jurta.org> <87vcjesccy.fsf@mail.jurta.org> <87lijtcx8m.fsf@mail.jurta.org> <87sj1811tq.fsf@mail.jurta.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1369778340 10231 80.91.229.3 (28 May 2013 21:59:00 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 28 May 2013 21:59:00 +0000 (UTC) Cc: 11378@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue May 28 23:58:57 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UhRuy-00015w-UQ for geb-bug-gnu-emacs@m.gmane.org; Tue, 28 May 2013 23:58:57 +0200 Original-Received: from localhost ([::1]:40989 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UhRuy-0003IW-IY for geb-bug-gnu-emacs@m.gmane.org; Tue, 28 May 2013 17:58:56 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:59702) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UhRuq-0003IQ-Qi for bug-gnu-emacs@gnu.org; Tue, 28 May 2013 17:58:54 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UhRul-0004HK-Uc for bug-gnu-emacs@gnu.org; Tue, 28 May 2013 17:58:48 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:49747) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UhRul-0004HB-Qi for bug-gnu-emacs@gnu.org; Tue, 28 May 2013 17:58:43 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UhRw3-00007t-8p for bug-gnu-emacs@gnu.org; Tue, 28 May 2013 18:00:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 28 May 2013 22:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 11378 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 11378-submit@debbugs.gnu.org id=B11378.1369778342368 (code B ref 11378); Tue, 28 May 2013 22:00:02 +0000 Original-Received: (at 11378) by debbugs.gnu.org; 28 May 2013 21:59:02 +0000 Original-Received: from localhost ([127.0.0.1]:38104 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhRv4-00005t-5W for submit@debbugs.gnu.org; Tue, 28 May 2013 17:59:02 -0400 Original-Received: from ps18281.dreamhost.com ([69.163.218.105]:49028 helo=ps18281.dreamhostps.com) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UhRv0-00005T-Ni for 11378@debbugs.gnu.org; Tue, 28 May 2013 17:59:00 -0400 Original-Received: from localhost (ps18281.dreamhostps.com [69.163.218.105]) by ps18281.dreamhostps.com (Postfix) with ESMTP id 64F83258B9E938; Tue, 28 May 2013 14:57:36 -0700 (PDT) In-Reply-To: <87sj1811tq.fsf@mail.jurta.org> (Juri Linkov's message of "Tue, 28 May 2013 01:45:12 +0300") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:74623 Archived-At: > I'll submit a new patch soon that adds a new variable > `isearch-search-invisible' (or maybe just `isearch-invisible') > to toggle its value without changing the value of the user option > `search-invisible'. Here is a patch that adds `isearch-toggle-invisible' that toggles `isearch-invisible' between nil and a non-nil default value of `search-invisible', i.e. if search-invisible is `open' then toggles isearch-invisible between `open' and `nil' if search-invisible is `t' then toggles isearch-invisible between `t' and `nil' if search-invisible is `nil' then toggles isearch-invisible between `nil' and `open' === modified file 'lisp/isearch.el' --- lisp/isearch.el 2013-05-27 22:42:11 +0000 +++ lisp/isearch.el 2013-05-28 21:41:15 +0000 @@ -514,6 +514,7 @@ (defvar isearch-mode-map (define-key map "\M-e" 'isearch-edit-string) (define-key map "\M-sc" 'isearch-toggle-case-fold) + (define-key map "\M-si" 'isearch-toggle-invisible) (define-key map "\M-sr" 'isearch-toggle-regexp) (define-key map "\M-sw" 'isearch-toggle-word) (define-key map "\M-s_" 'isearch-toggle-symbol) @@ -602,6 +607,11 @@ (defvar isearch-start-hscroll 0) ; hscro ;; case in the search string is ignored. (defvar isearch-case-fold-search nil) +;; search-invisible while searching. +;; either nil, t, or 'open. 'open means the same as t except that +;; opens hidden overlays. +(defvar isearch-invisible 'open) + (defvar isearch-last-case-fold-search nil) ;; Used to save default value while isearch is active @@ -700,6 +711,7 @@ (defun isearch-forward (&optional regexp nonincremental search. Type \\[isearch-toggle-case-fold] to toggle search case-sensitivity. +Type \\[isearch-toggle-invisible] to toggle search in invisible text. Type \\[isearch-toggle-regexp] to toggle regular-expression mode. Type \\[isearch-toggle-word] to toggle word mode. Type \\[isearch-toggle-symbol] to toggle symbol mode. @@ -836,6 +867,7 @@ (defun isearch-mode (forward &optional r isearch-op-fun op-fun isearch-last-case-fold-search isearch-case-fold-search isearch-case-fold-search case-fold-search + isearch-invisible search-invisible isearch-string "" isearch-message "" isearch-cmds nil @@ -1487,6 +1527,23 @@ (defun isearch-toggle-case-fold () (sit-for 1) (isearch-update)) +(defun isearch-toggle-invisible () + "Toggle searching in invisible text on or off. +Toggles the variable `isearch-invisible' between values nil +and a non-nil default value of `search-invisible' (or `open' +if `search-invisible' is nil by default)." + (interactive) + (setq isearch-invisible + (if isearch-invisible nil (or search-invisible 'open))) + (let ((message-log-max nil)) + (message "%s%s [match %svisible text]" + (isearch-message-prefix nil isearch-nonincremental) + isearch-message + (if isearch-invisible "in" ""))) + (setq isearch-success t isearch-adjusted t) + (sit-for 1) + (isearch-update)) + ;; Word search @@ -1622,6 +1679,7 @@ (defun isearch-query-replace (&optional ;; set `search-upper-case' to nil to not call ;; `isearch-no-upper-case-p' in `perform-replace' (search-upper-case nil) + (search-invisible isearch-invisible) (replace-lax-whitespace isearch-lax-whitespace) (replace-regexp-lax-whitespace @@ -2634,9 +2739,10 @@ (defun isearch-search () (setq isearch-case-fold-search (isearch-no-upper-case-p isearch-string isearch-regexp))) (condition-case lossage - (let ((inhibit-point-motion-hooks search-invisible) + (let ((inhibit-point-motion-hooks isearch-invisible) (inhibit-quit nil) (case-fold-search isearch-case-fold-search) + (search-invisible isearch-invisible) (retry t)) (setq isearch-error nil) (while retry