
All tests pass with the latest snapshot, with --drdr
. I ran them 6 times.

Apparently the tests now pass on DrDr too: http://drdr.racket-lang.org/60351/racket/share/pkgs/quickscript-test/drracket.rkt Not sure what was happening :thinking_face:

That’s very odd

What does “me” mean in “wxme”? It seems to be a common base on top of the platform-specific “wx” implementation, is that right?

“Media editor”. The editor%
class was originally wxMediaEditor
, or something like that, which the idea of maybe being useful for other wxWindows users. Such ancient history.

*Me*dia? I’m only guessing

Good guess! :slightly_smiling_face:

Lol

wow, that must be fairly close to the beginnings of PLT Scheme!

Is there a place where I can read about the rationale of the complexity of the keymap%
implementation? In particular the scoring algorithm: https://github.com/racket/gui/blob/master/gui-lib/mred/private/wxme/keymap.rkt#L196
(I think a lot of my keybinding issues with DrRacket are due to this complexity)

Yes, the very very beginning

No, that’s all there is. There’s nothing more to say beyond it being an attempt to make sense of the way that a key combination can mean different things, and you have to pick among the possible meanings.

I see, thanks.
I’m strongly considering attempting a different approach, a la Emacs, where the user merely types the keybinding they want to see associated with a particular event. This makes it easy to deal with the specificities of the various platforms.
I think the current keymap% is trying too hard to guess the intent of the key combination, and this grabs too many combinations at the same time (e.g., my custom c:s:t doesn’t work because it’s grabbed by the non-modifiable c:t)

If you have exactly the keys you want to match, it seems like you should be able to add ~
modifiers to maximize the specificity/score. But c:s:t
should already have a higher score than c:t
, so probably I’m missing something.

Unless c:s:t is lower on the keymap chain maybe?

Is there a general technique for referencing a binding introduced later? Simple example: (define a (+ 1 b))
(define b 2)

I remembered the let*
technique… using set!
. Is there something else?

What’s the actual problem that you are trying to solve?

Users of my Racket based DSL want to have a bit definition at the top of the file and supplemental definitions later.

I realize how I can use delay
and force
too

Or just a simple thunking

yeah