[racket] Strange editor behaviour

From: Neil Toronto (neil.toronto at gmail.com)
Date: Sat Sep 14 17:03:55 EDT 2013

I appreciate your work on this, and also how tiny the test case is. :)

If it helps - and it may just confirm your theories - I've noticed that 
when the bad behavior happens, CTRL-Z undoes single keystrokes.

On 09/14/2013 02:00 PM, Robby Findler wrote:
> A little more progress: it turns out that simply turning on and turning
> off an edit-sequence in a text% object clears some internal state in a
> text% object (the extend-streak? field) and, when the search bars are
> open, more edit sequences are flying around. That seems wrong to me
> (that starting and ending an edit-sequence would clear this state), but
> I'm not sure if the answer can be as simple as avoiding this
> state-clearing action or not. Anyways, here's some simple code that
> demonstrates how far I've gotten.
>
>
> #lang racket/base
> (require rackunit racket/class racket/gui/base)
>
> (check-equal? (let ()
>                  (define t (new text%))
>                  (send t insert "abcdef")
>                  (send t set-position 3 3)
>                  (send t move-position 'right #t)
>                  (send t move-position 'left #t)
>                  (list (send t get-start-position)
>                        (send t get-end-position)))
>                (list 3 3))
>
>
> (check-equal? (let ()
>                  (define t (new text%))
>                  (send t insert "abcdef")
>                  (send t set-position 3 3)
>                  (send t move-position 'right #t)
>                  (send t begin-edit-sequence)
>                  (send t end-edit-sequence)
>                  (send t move-position 'left #t)
>                  (list (send t get-start-position)
>                        (send t get-end-position)))
>                (list 3 3))
>
> Robby
>
>
>
> On Sat, Sep 14, 2013 at 12:43 PM, Neil Toronto <neil.toronto at gmail.com
> <mailto:neil.toronto at gmail.com>> wrote:
>
>     Yes! You figured it out! This has been bugging me for months.
>
>     Here's more info, in case it helps. In addition to SHIFT+Left,
>     SHIFT+Right, SHIFT+Up and SHIFT+Down always expanding the selection
>     when Replace is shown, so does SHIFT-End, and all the SHIFT+ALT
>     arrow combos and SHIFT+CTRL combos. SHIFT-Home only works when the
>     selection doesn't span multiple lines.
>
>     If the Search box is empty, selection works as expected. (That is,
>     getting in this always-expanding-selection or
>     caret-position-forgetting state requires the Replace box to be shown
>     and the Search box to have text in it.) If the Search box has text
>     in it, it doesn't matter whether it's found. I'm guessing there's
>     some caret-wrangling code for the search bar that causes the editor
>     to forget the caret position while selecting.
>
>     Selection in the REPL also seems to be affected by Search and
>     Replace in exactly the same way. (I haven't tested it thoroughly.)
>
>     We should have Eli test this because he's had the same problem.
>     IIRC, he uses Linux, and so do I: I've seen this on Ubuntu 12.04 and
>     13.04.
>
>     Neil ⊥
>
>
>     On 09/14/2013 08:20 AM, bhrgunatha wrote:
>
>         After lots of head scratching and experimenting I have a
>         consistent cause.
>
>         It seems like the Search and Replace bar causes some problem.
>         It is only happening when the Replace text box is visible.
>
>         This weird behaviour disappears if the I click the Hide Replace
>         button
>         or choose Hide Replace from the Edit menu.
>
>         I've also noticed that S:C:R stops working after the Replace
>         text box
>         and buttons have disappeared. That is I can't Hide, then Re show the
>         Replace text box.
>
>         I hope that helps you fix the problem, but I'm pretty happy now
>         I know
>         how to get the correct operation back again.
>
>         Thanks,
>         Bhrgunatha
>
>
>         On 14/09/13 20:04, Robby Findler wrote:
>
>             This sounds like a bug in the implementation of the
>             shift-left and
>             shift-right keybindings.
>
>             If you can give some kind of a step by step procedure to get
>             into the
>             bad state, then I think we can probably fix it.
>
>             Robby
>
>
>
>             On Sat, Sep 14, 2013 at 6:16 AM, bhrgunatha
>             <bhrgunatha at hotmail.com <mailto:bhrgunatha at hotmail.com>
>             <mailto:bhrgunatha at hotmail.com
>             <mailto:bhrgunatha at hotmail.com>__>> wrote:
>
>                  I'm having a problem editing programs using DrRacket.
>             This happened
>                  once before but went away after re-installing. [1].
>
>                  I'm having the same issue again. Basically the
>             behaviour of text
>                  selection is changes while I open and edit different
>             files running a
>                  single instance of DrRacket.
>
>                  If I select some text and then press SHIFT+Left instead
>             of altering
>                  the selection based on the current cursor position, the
>             selection is
>                  extended left from the beginning of the text currently
>             selected.
>
>                  Similarly for SHIFT+Right - it extends the text
>             selection one
>                  character to the right from the end of the selection
>             rather than the
>                  current cursor position. Same for SHIFT+Down, SHIFT+Up.
>
>                  Is there some key binding or setting in DrRacket that
>             controls the
>                  way text selection is handled that I am accidentally
>             hitting?
>
>                  It doesn't happen in any other editor - it's specific
>             to DrRacket.
>
>                  If I quit DrRacket and re-open it normal operation
>             continues for a
>                  while again. I don't know if it's a bug or some setting
>             in DrRacket
>                  that I am unaware of.
>
>                  My current specs are:
>                  Arch Linux 64 bit:
>                  Linux 3.10.10-1-ARCH #1 SMP PREEMPT x86_64 GNU/Linux
>
>                  DrRacket 5.3.6.
>                  (This is a version I compiled myself - but it's the
>             same using the
>                  Arch binary package - racket 5.3.6-1)
>
>                  Can someone offer any advice?
>
>                  Bhrgunatha
>
>                  [1]
>
>             http://article.gmane.org/____gmane.comp.lang.racket.user/____17034/match=bhrgunatha
>             <http://article.gmane.org/__gmane.comp.lang.racket.user/__17034/match=bhrgunatha>
>
>
>             <http://article.gmane.org/__gmane.comp.lang.racket.user/__17034/match=bhrgunatha
>             <http://article.gmane.org/gmane.comp.lang.racket.user/17034/match=bhrgunatha>>
>
>                  ____________________
>                    Racket Users list:
>             http://lists.racket-lang.org/____users
>             <http://lists.racket-lang.org/__users>
>                  <http://lists.racket-lang.org/__users
>             <http://lists.racket-lang.org/users>>
>
>
>
>         ____________________
>            Racket Users list:
>         http://lists.racket-lang.org/__users
>         <http://lists.racket-lang.org/users>
>
>
>     ____________________
>       Racket Users list:
>     http://lists.racket-lang.org/__users
>     <http://lists.racket-lang.org/users>
>
>


Posted on the users mailing list.