Subject: bug#4117: 23.1; isearch + isearch-allow-scroll loses shift

From: Eli Barzilay <[email-masked]>
Date: Sat, 15 Aug 2009 20:00:19 -0400

On Aug 16, Juri Linkov wrote:
> >> This is just an analysis.  I currently don't know what is the
> >> right way to fix this.  Maybe simply add the shift modifier back
> >> to the key when `this-command-keys-shift-translated' to t after
> >> `read-key-sequence'.
> >
> > This sounds like a good strategy, given that shift is now very
> > useful in general.
> 
> It's interesting that after loading s-region.el, your reported case
> works correctly without fixes.
> 
> So it seems the current core shift-selection is not the exact
> re-implementation of s-region.el.

I still believe that the problem is somewhere in how
`isearch-other-meta-char' restores the key.  FWIW, here is my hack; I
can't even explain how it works since I was basically guessing my way
trying to get the stupid thing to work.

At least in v22, this would cause the key that is used to exit isearch
to be replayed twice -- for example, using `C-x 2' would happen twice.
It just happens that I'm personally much more likely to shift-arrow my
way out of isearch than I am to splitting the window.

                (progn
                  ;; original code:
                  ;; (setq key (isearch-reread-key-sequence-naturally keylist))
                  ;; (setq keylist (listify-key-sequence key))
                  ;; ELI: use original prefix, so S-up keeps the S
                  (let* ((key1 (isearch-reread-key-sequence-naturally keylist))
                         (keylist1 (listify-key-sequence key1)))
                    (setq keylist (listify-key-sequence key)) ; original key
                    (setq keylist (append keylist (nthcdr (length keylist)
                                                          keylist1)))
                    (setq key key1)
                    (setq main-event (aref key 0))
                    (setq scroll-command (isearch-lookup-scroll-key key))))

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!