<PRIVATE
-: page-elt ( editor -- editor element )
- dup visible-lines 1 - [ 1 ] when-zero <page-elt> ;
+: page-elt ( editor n -- editor element )
+ over visible-lines 1 - min 1 max <page-elt> ;
+
+: prev-page-elt ( editor -- editor element )
+ dup editor-caret first page-elt ;
+
+: next-page-elt ( editor -- editor element )
+ dup [ control-value length ] [ editor-caret first ] bi - page-elt ;
PRIVATE>
-: previous-page ( editor -- ) page-elt editor-prev ;
+: previous-page ( editor -- ) prev-page-elt editor-prev ;
-: next-page ( editor -- ) page-elt editor-next ;
+: next-page ( editor -- ) next-page-elt editor-next ;
: select-previous-line ( editor -- ) line-elt editor-select-prev ;
: select-next-line ( editor -- ) line-elt editor-select-next ;
-: select-previous-page ( editor -- ) page-elt editor-select-prev ;
+: select-previous-page ( editor -- ) prev-page-elt editor-select-prev ;
-: select-next-page ( editor -- ) page-elt editor-select-next ;
+: select-next-page ( editor -- ) next-page-elt editor-select-next ;
: insert-newline ( editor -- )
"\n" swap user-input* drop ;