     { T{ key-down f { M+ } "DOWN" } end-of-paragraph }
     { T{ key-down f { M+ } "HOME" } start-of-document }
     { T{ key-down f { M+ } "END" } end-of-document }
-    { T{ key-down f { C+ } "b" } previous-character }
-    { T{ key-down f { C+ } "f" } next-character }
-    { T{ key-down f { C+ } "a" } start-of-line }
-    { T{ key-down f { C+ } "e" } end-of-line }
 } append ] when define-command-map
 
 : clear-editor ( editor -- )

    { T{ key-down f f "ENTER" } insert-newline }
    { T{ key-down f { S+ } "ENTER" } insert-newline }
    { T{ key-down f { C+ } "j" } com-join-lines }
} os unix? [ {
    { T{ key-down f { C+ } "p" } previous-line }
    { T{ key-down f { C+ } "n" } next-line }
} append ] when define-command-map

TUPLE: source-editor < multiline-editor ;


action-field H{
    { T{ key-down f f "RET" } [ invoke-action-field ] }
} set-gestures

: readline-bindings ( editor-class -- )
    "readline" f {
        { T{ key-down f { C+ } "p" } previous-line }
        { T{ key-down f { C+ } "n" } next-line }
        { T{ key-down f { C+ } "b" } previous-character }
        { T{ key-down f { C+ } "f" } next-character }
        { T{ key-down f { C+ } "a" } start-of-line }
        { T{ key-down f { C+ } "e" } end-of-line }
        ! { T{ key-down f { C+ } "t" } transpose-character }
        { T{ key-down f { C+ } "d" } delete-next-character }
        { T{ key-down f { C+ } "h" } delete-previous-character }
        { T{ key-down f { C+ } "u" } delete-to-start-of-line }
        { T{ key-down f { C+ } "k" } delete-to-end-of-line }
        { T{ key-down f { C+ } "w" } delete-previous-word }
    } define-command-map ;
