emacs-devel
[Top][All Lists]
Advanced

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

Re: `isearch-allow-scroll' - a misnomer and a bad design


From: Alan Mackenzie
Subject: Re: `isearch-allow-scroll' - a misnomer and a bad design
Date: Sun, 11 Sep 2011 17:30:12 +0000
User-agent: Mutt/1.5.21 (2010-09-15)

Hi, Drew.

On Sun, Sep 11, 2011 at 09:54:17AM -0700, Drew Adams wrote:
> > > I would like to see `C-u' passed through - that's the main point.
> > > Either systematically or optionally, but if optionally then 
> > > separately from allowing scrolling.

> > Here's a better patch.  I've tested it more than the previous attempt.

> Thank you, Alan.  Seems to work.

Great stuff!

> Even works with a sequence such as `C-1 C-- C-2', which passes -12 as it 
> should,
> but which is relatively unknown.  I tested this case because I noticed that 
> you
> did not include `universal-argument-minus' in your test. But that is covered 
> OK
> anyway, I guess because of the default ([t]) binding for
> `universal-argument-other-key'.

`univeral-argument-minus' isn't used anymore.  The C-- is now handled by
`negative-argument'.

> Can this patch please be installed?  Or are there people who prefer that `C-u'
> exit Isearch?  If there are, then can we please have a user option for this
> choice?

Here's another version of the patch, this time with
`isearch-allow-prefix'.  Its doc string isn't all that great; perhaps you
can improve it.

As for installing it, it's fine by me, but you'd have to negotiate with
Stefan, since we're in feature freeze.  Before installing, there really
ought to be a mention of the feature in the Emacs manual.

As a matter of interest, the code does assume scrolling, sort of.  After
a "scrolling command" the code checks that the search string is within
the window, and scrolls it back in if it isn't.

> Thx.


*** isearch.el  2011-09-04 15:31:05.000000000 +0000
--- isearch.100911.el   2011-09-11 17:14:27.000000000 +0000
***************
*** 1817,1822 ****
--- 1817,1830 ----
    :type 'boolean
    :group 'isearch)
  
+ (defcustom isearch-allow-prefix nil
+   "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,
***************
*** 1966,1976 ****
           (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
--- 1974,1991 ----
           (apply 'isearch-unread keylist)
           (isearch-edit-string))
            ;; Handle a scrolling function.
!           ((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]