 PRIVATE>
 
 M: char-elt prev-elt
-    drop [ drop -1 +col ] (prev-char) ;
+    drop [ drop -1 +col ] prev ;
 
 M: char-elt next-elt
-    drop [ drop 1 +col ] (next-char) ;
+    drop [ drop 1 +col ] next ;
 
 SINGLETON: one-char-elt
 


<PRIVATE

: (prev-char) ( loc document quot -- loc )
    {
        { [ pick { 0 0 } = ] [ 2drop ] }
        { [ pick second zero? ] [ drop [ first 1- ] dip line-end ] }
        [ call ]
    } cond ; inline

: (next-char) ( loc document quot -- loc )
    {
        { [ 2over doc-end = ] [ 2drop ] }
        { [ 2over line-end? ] [ 2drop first 1+ 0 2array ] }

        [ [ first2 swap ] dip doc-line ] dip call
    ] dip =col ; inline

: blank-at? ( n seq -- n seq ? )
    2dup ?nth blank? ;

: break-detector ( ? -- quot )
