{{{  comments
; This is a macropaket, that can display a file in a window below the text.
; The environment-variable ORIAREA must contain the filename.
}}}
@if-using not(OPAGER)
  @use (OPAGER)
  {{{  libs
  {{{F fun/error
  :::F fun/error
  }}}
  }}}
  {{{  vars
  ( defvar
     ( area-length      ; number of lines in area
       area-position    ; currently displayed block
       area-lead        ; use withespace at beginning of blocklines?
       x                ; help
     )
  )
  }}}
  {{{  local functions
  ( forward pager-again )
  {{{  area-size-check
  ( deffun area-size-check
     ( while not(counter>0 -( screen-height area-length 3 ))
        ( set-counter area-length -(area-length 1) )
       if not(counter>0 +( area-length -1 ) ) ( set-counter area-length 2 ) fi
     )
  )
  }}}
  }}}
  {{{  pager-shrink       Make the window smaller
  ( deffun pager-shrink
     ( set-counter area-length +(area-length -1)
       area-size-check
       set-area area-length
     )
  )
  }}}
  {{{  pager-grow         Make the window bigger
  ( deffun pager-grow
     ( set-counter area-length +(area-length 1)
       area-size-check
       set-area area-length
       pager-again
     )
  )
  }}}
  {{{  pager-start        Start displaying a window
  ( forward pager-next )
  ( deffun pager-start
     (
       {{{  get length
       if not(counter>0 area-length)
        ( prompt-counter area-length ("area-length "  "? "  ) )
       fi
       }}}
       area-size-check
       set-area area-length
       set-counter area-position 1
       pager-again
     )
  )
  }}}
  {{{  pager-again        Redraw the window
  ( deffun pager-again
     ( if counter>0 +(area-length -1)
        ( if counter-0 area-lead
           {{{  command
           ( pipe-area ("oripager
                        "  "-b counter area-position
                        "  "-l counter area-length
                       )
           )
           }}}
          else
           {{{  command with leading space
           ( pipe-area ("oripager
                        "  "-b counter area-position
                        "  "-l counter area-length
                        "  "-m
                       )
           )
           }}}
          fi
        )
       else
        ( if counter-0 area-lead
           {{{  command
           ( pipe-area ("oripager
                        "  "-b counter area-position
                        "  "-l counter area-length
                        "  "-t
                       )
           )
           }}}
          else
           {{{  command with leading space
           ( pipe-area ("oripager
                        "  "-b counter area-position
                        "  "-l counter area-length
                        "  "-m
                        "  "-t
                       )
           )
           }}}
          fi
        )
       fi
     )
  )
  }}}
  {{{  pager-next         Show the next window-page
  ( deffun pager-next
     (
       {{{  get next startline
       set-counter area-position +(area-position 1)
       }}}
       pager-again
     )
  )
  }}}
  {{{  pager-previous     Show the last window-page
  ( deffun pager-previous
     (
       {{{  get previous line
       set-counter area-position +(area-position -1)
       if not(counter>0 area-position) ( set-counter area-position 1 ) fi
       }}}
       pager-again
     )
  )
  }}}
  {{{  pager-end          Don't show the window
  ( deffun pager-end ( set-area 0 ) )
  }}}
@fi
