     tuck caret>> set-model mark>> set-model ;
 
 : select-elt ( editor elt -- )
-    over >r
-    >r dup editor-caret* swap model>> r> prev/next-elt
-    r> editor-select ;
+    [ [ [ editor-caret* ] [ model>> ] bi ] dip prev/next-elt ] [ drop ] 2bi
+    editor-select ;
 
 : start-of-document ( editor -- ) T{ doc-elt } editor-prev ;
 

    line-translation gl-translate ;

: draw-line ( editor str -- )
    >r font>> r> { 0 0 } draw-string ;

: first-visible-line ( editor -- n )
    clip get rect-loc second origin get second -

    rot control-value <slice> ;

: with-editor-translation ( n quot -- )
    [ line-translation origin get v+ ] dip with-translation ;
    inline

: draw-lines ( -- )
