emacs-devel
[Top][All Lists]
Advanced

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

isearch-allow-prefix [Was: [PATCH] Make `C-x {' and `C-x }' repeatable]


From: Alan Mackenzie
Subject: isearch-allow-prefix [Was: [PATCH] Make `C-x {' and `C-x }' repeatable]
Date: Sun, 2 Jun 2013 21:05:12 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

Hi, Juri and Stefan.

On Sat, May 25, 2013 at 11:40:55PM +0300, Juri Linkov wrote:
> >> There is an unaddressed request for this feature in bug#9706.

> > If I remember correctly, the patch to the code was finished and working
> > (and who knows, might still work), but the patch to the manual hadn't yet
> > been written.

> I highly recommend enabling `isearch-allow-prefix' by default
> in your patch, provided that it can correctly apply a specified
> argument either to a isearch command (that doesn't exit isearch)
> or to a normal command (that exits isearch).

> IOW, if `C-u C-M-y' typed in isearch-mode will apply `C-u'
> to `isearch-yank-char' without exiting isearch, but `C-u C-f'
> will exit isearch and apply `C-u' to `forward-char', then
> the default value of `isearch-allow-prefix' should be `t'.

OK.  Here is a patch for isearch.el, search.texi and NEWS.  I'm not
terribly impressed by the documentation patch, but it was the best I
could manage.

Do you have any comments on the patch, or should I just commit it?




=== modified file 'doc/emacs/emacs.texi'
*** doc/emacs/emacs.texi        2013-03-30 16:47:07 +0000
--- doc/emacs/emacs.texi        2013-06-02 18:25:29 +0000
***************
*** 396,409 ****
  
  Incremental Search
  
! * Basic Isearch::       Basic incremental search commands.
! * Repeat Isearch::      Searching for the same string again.
! * Error in Isearch::    When your string is not found.
! * Special Isearch::     Special input in incremental search.
! * Isearch Yank::        Commands that grab text into the search string
!                           or else edit the search string.
! * Isearch Scroll::      Scrolling during an incremental search.
! * Isearch Minibuffer::  Incremental search of the minibuffer history.
  
  Replacement Commands
  
--- 396,410 ----
  
  Incremental Search
  
! * Basic Isearch::               Basic incremental search commands.
! * Repeat Isearch::              Searching for the same string again.
! * Error in Isearch::            When your string is not found.
! * Prefix Argument in Isearch::  What prefix arguments do.
! * Special Isearch::             Special input in incremental search.
! * Isearch Yank::                Commands that grab text into the search string
!                                   or else edit the search string.
! * Isearch Scroll::              Scrolling during an incremental search.
! * Isearch Minibuffer::          Incremental search of the minibuffer history.
  
  Replacement Commands
  

=== modified file 'doc/emacs/search.texi'
*** doc/emacs/search.texi       2013-05-15 23:14:18 +0000
--- doc/emacs/search.texi       2013-06-02 20:52:05 +0000
***************
*** 52,65 ****
  @end table
  
  @menu
! * Basic Isearch::       Basic incremental search commands.
! * Repeat Isearch::      Searching for the same string again.
! * Error in Isearch::    When your string is not found.
! * Special Isearch::     Special input in incremental search.
! * Isearch Yank::        Commands that grab text into the search string
!                           or else edit the search string.
! * Isearch Scroll::      Scrolling during an incremental search.
! * Isearch Minibuffer::  Incremental search of the minibuffer history.
  @end menu
  
  @node Basic Isearch
--- 52,66 ----
  @end table
  
  @menu
! * Basic Isearch::               Basic incremental search commands.
! * Repeat Isearch::              Searching for the same string again.
! * Error in Isearch::            When your string is not found.
! * Prefix Argument in Isearch::  What prefix arguments do.
! * Special Isearch::             Special input in incremental search.
! * Isearch Yank::                Commands that grab text into the search string
!                                   or else edit the search string.
! * Isearch Scroll::              Scrolling during an incremental search.
! * Isearch Minibuffer::          Incremental search of the minibuffer history.
  @end menu
  
  @node Basic Isearch
***************
*** 212,217 ****
--- 213,234 ----
  waiting for more input, so a second @kbd{C-g} will cancel the entire
  search.
  
+ @node Prefix Argument in Isearch
+ @subsection The Prefix Argument in Incremental Search
+ 
+ @vindex isearch-allow-prefix
+   In incremental search, when you enter a prefix argument
+ (@pxref{Arguments}), by default it will apply either to the next
+ action in the search or to the command that exits the search.
+ 
+   In previous versions of Emacs, entering a prefix argument always
+ terminated the search.  You can revert to this behavior by setting the
+ variable @code{isearch-allow-prefix} to @code{nil}.
+ 
+   When @code{isearch-allow-scroll} is address@hidden (@pxref{Isearch
+ Scroll}), prefix arguments always have the default behavior described
+ above.
+ 
  @node Special Isearch
  @subsection Special Input for Incremental Search
  

=== modified file 'etc/NEWS'
*** etc/NEWS    2013-05-27 23:02:37 +0000
--- etc/NEWS    2013-06-02 19:56:21 +0000
***************
*** 244,249 ****
--- 244,253 ----
  *** `query-replace' skips invisible text when `search-invisible' is nil,
  and opens overlays with hidden text when `search-invisible' is `open'.
  
+ +++
+ *** By default, prefix arguments can now be entered without
+ terminating Isearch mode.  Set `isearch-allow-prefix' to nil to disable.
+ 
  ** MH-E has been updated to MH-E version 8.5.
  See MH-E-NEWS for details.
  

=== modified file 'lisp/isearch.el'
*** lisp/isearch.el     2013-05-27 22:42:11 +0000
--- lisp/isearch.el     2013-06-02 20:54:25 +0000
***************
*** 2102,2107 ****
--- 2102,2115 ----
    :type 'boolean
    :group 'isearch)
  
+ (defcustom isearch-allow-prefix t
+   "Whether prefix arguments are allowed during incremental search.
+ If non-nil, entering a prefix argument will not terminate the
+ search.  This option is ignored \(presumed t) when
+ `isearch-allow-scroll' is set."
+   :type 'boolean
+   :group 'isearch)
+ 
  (defun isearch-string-out-of-window (isearch-point)
    "Test whether the search string is currently outside of the window.
  Return nil if it's completely visible, or if point is visible,
***************
*** 2254,2265 ****
           (setq prefix-arg arg)
           (apply 'isearch-unread keylist)
           (isearch-edit-string))
!           ;; Handle a scrolling function.
!           ((and isearch-allow-scroll
!                 (progn (setq key (isearch-reread-key-sequence-naturally 
keylist))
!                        (setq keylist (listify-key-sequence key))
!                        (setq main-event (aref key 0))
!                        (setq scroll-command (isearch-lookup-scroll-key key))))
             ;; From this point onwards, KEY, KEYLIST and MAIN-EVENT hold a
             ;; complete key sequence, possibly as modified by function-key-map,
             ;; not merely the one or two event fragment which invoked
--- 2262,2280 ----
           (setq prefix-arg arg)
           (apply 'isearch-unread keylist)
           (isearch-edit-string))
!           ;; Handle a scrolling function or prefix argument.
!           ((progn
!            (setq key (isearch-reread-key-sequence-naturally keylist)
!                  keylist (listify-key-sequence key)
!                  main-event (aref key 0))
!            (or (and isearch-allow-scroll
!                     (setq scroll-command (isearch-lookup-scroll-key key)))
!                (and isearch-allow-prefix
!                     (let (overriding-terminal-local-map)
!                       (setq scroll-command (key-binding key))
!                       (memq scroll-command
!                             '(universal-argument
!                               negative-argument digit-argument))))))
             ;; From this point onwards, KEY, KEYLIST and MAIN-EVENT hold a
             ;; complete key sequence, possibly as modified by function-key-map,
             ;; not merely the one or two event fragment which invoked



-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

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