On Fri, Jul 5, 2019 at 2:32 PM Jordan Johnson <[email protected]> wrote: > > Thanks for the reply, Robby. > > On Jul 2, 2019, at 19:11, Robby Findler <[email protected]> wrote: > One note not related to what you ask: lines in editor<%> parlance are > soft-breaking; the methods about paragraphs are the ones you want. > For which specific purpose? > > The method that c:e is bound to by default (end-of-line, IIRC — I’m on my > phone) is a line method, not paragraph, right? I am (wrongly?) confident that > it is the one I need to wrap for my new binding. When I tested it out in DrR > with an editor that had some wrapped lines, c:e behaved as I’d expected: it > jumps the cursor to the end of the row of characters the cursor is on, which > is right before the actual newline iff the line isn’t wrapped. (However, I’ve > only tried this with wrapping turned on.) Am I understanding correctly?
Oh, maybe you do want end of lines, in that case. Sorry for the noise. Robby > Does c:e have different behavior in editing Scribble or other less-schemey > texts? I’ve been assuming it is totally language-agnostic. > > Thanks again, > J > > Robby > > > On Tue, Jul 2, 2019 at 11:41 AM Jordan Johnson <[email protected]> wrote: >> >> Dear Racket folks, >> >> I’m trying to implement a keybinding to get me more familiar with the editor >> toolkit. I’m working on modifying the Ctrl+E keybinding so it behaves more >> like the Ctrl+A keybinding (which, once at the beginning of the line, >> toggles between the true beginning of the line and the beginning of >> non-whitespace text on the line). The behavior I want is (I think) outlined >> pretty well in the code below, but to be clear: if the cursor is already at >> the line end, I want Ctrl+E to make the cursor jump to (right after) the end >> of the last s-exp that ends to the left of the cursor on the present line if >> there is such a s-exp. (The cursor can stay put if there is no such s-exp.) >> >> Here’s what I have so far: >> >> ;;; >> #lang s-exp framework/keybinding-lang >> >> (require drracket/tool-lib) >> >> (define (at-EOL? ed) ; text% -> Boolean, #true iff cursor is right before >> newline >> (define sp (send ed get-start-position)) >> (= sp >> (send ed get-end-position) >> (send ed line-end-position (send ed find-line sp)))) >> >> (define (go-to-eol ed evt) >> (send (send ed get-keymap) call-function "end-of-line" ed evt #t)) >> >> (define (go-to-end-of-code-on-line ed) ;; text% -> void? >> ;; jump to the end of the code that is on the current line >> (void)) ;; TODO >> >> (keybinding "c:e" (λ (ed evt) >> (if (at-EOL? ed) >> (go-to-end-of-code-on-line ed) >> (go-to-eol ed evt)))) >> ;;; >> >> Two questions for those of you who know the editor toolkit well: >> >> Given what’s in the tool-lib, what’d be the best way to approach writing >> go-to-end-of-code-on-line? (I was thinking: save cursor position & line no; >> move left/backward by one s-exp; then move right/forward by one s-exp; then >> check if still on the same line, and if not restore the cursor position from >> before the moves.) >> Does it look like I’m on the right track, otherwise? >> >> >> Thanks, >> Jordan >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Racket Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/racket-users/641F6290-D258-4D8D-B774-CAF5D9327204%40fellowhuman.com. >> For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/racket-users/CAL3TdOO-1u_25gOUGjhQXdWii4jkyub9F1PfWH6wZ0kG%2BEtp%3Dw%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CAL3TdONMyecdQz0xx%3Dg2m2QD6Bgyh%2BMr2p0hGFYUV%3DzFbbR6DQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

