bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#11378: 24.1.50; Suggestion: Let M-i in isearch cycle `search-invisib


From: Juri Linkov
Subject: bug#11378: 24.1.50; Suggestion: Let M-i in isearch cycle `search-invisible'
Date: Sun, 02 Jun 2013 12:47:12 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (x86_64-pc-linux-gnu)

> I'm preparing a patch that adds it to customize the behavior of
> case-fold and invisible.

This patch adds a new user option `isearch-keep-mode-variables'
in parallel to another new option `isearch-keep-stack-variables'
added in bug#12986.  It supports `isearch-case-fold-search' and
`isearch-invisible' variables, but `isearch-filter-predicates',
`isearch-lax-whitespace' could be added in the same way later.

=== modified file 'lisp/isearch.el'
--- lisp/isearch.el     2013-05-30 23:50:36 +0000
+++ lisp/isearch.el     2013-06-02 09:45:01 +0000
@@ -153,6 +153,20 @@ (defcustom isearch-hide-immediately t
   :type 'boolean
   :group 'isearch)
 
+(defcustom isearch-keep-mode-variables nil
+  "A set of search variables to keep between different searches.
+When a search variable is customized to exist in this set, then
+starting a new search doesn't reset the corresponding isearch variable
+to its default value, thus keeping the value from the previous search
+\(changed using toggling commands)."
+  :type '(set (const :tag "Case folding" isearch-case-fold-search)
+             (const :tag "Invisible text" isearch-invisible)
+             (const :tag "Filters" isearch-filter-predicates)
+             (const :tag "Lax whitespace" isearch-lax-whitespace)
+             (const :tag "Regexp lax whitespace" 
isearch-regexp-lax-whitespace))
+  :version "24.4"
+  :group 'isearch)
+
 (defcustom isearch-resume-in-command-history nil
   "If non-nil, `isearch-resume' commands are added to the command history.
 This allows you to resume earlier Isearch sessions through the
@@ -866,8 +895,6 @@ (defun isearch-mode (forward &optional r
        isearch-word word
        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
@@ -898,6 +927,11 @@ (defun isearch-mode (forward &optional r
        isearch-original-minibuffer-message-timeout minibuffer-message-timeout
        minibuffer-message-timeout nil)
 
+  (unless (memq 'isearch-case-fold-search isearch-keep-mode-variables)
+    (setq isearch-case-fold-search case-fold-search))
+  (unless (memq 'isearch-invisible isearch-keep-mode-variables)
+    (setq isearch-invisible search-invisible))
+
   ;; We must bypass input method while reading key.  When a user type
   ;; printable character, appropriate input method is turned on in
   ;; minibuffer to read multibyte characters.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]