{{{  comments
; jump snetences forward and backward. A sentence end with ``.'' followed
; by two spaces or end-of-line.
; roff-commands at start-of-line will be skipped
}}}
{{{  libs
{{{F fun/error
:::F fun/error
}}}
{{{F fun/next-char
:::F fun/next-char
}}}
{{{F fun/pre-char
:::F fun/pre-char
}}}
}}}
@if-using not(SENTMAC)
  @use (SENTMAC)
  {{{  forward-sentence
  ( deffun forward-sentence
     ( if not(test-text) ( failed ) fi
       {{{  search ".  "
       do
        (
          {{{  search the next .
          do
           ( if test-char ".
              ( next-line
                beginning-of-line
              )
             else
              ( do
                 ( if test-bottom ( failed ) fi
                   forward-text-character
                 )
                while not(test-char ".)
              )
             fi
           )
          while test-begin-line
          }}}
          forward-character
          if test-char "  ( forward-character ) fi
        )
       while not(test-char " )
       }}}
       {{{  move to following non-space-char
       while or(test-char "  and(test-char ". test-begin-line))
        ( if and(test-char ". test-begin-line) ( end-of-line ) fi
          forward-text-character
          if test-bottom ( failed ) fi
        )
       }}}
     )
  )
  }}}
  {{{  backward-sentence
  ( deffun backward-sentence
     ( local
        ( x )
        ( if not(test-text) ( failed ) fi
          set-counter x 1
          {{{  search '.  '
          do
           ( do
              {{{  skip char and roff-comment
              ( previous-text-character
                if test-top ( failed ) fi
                if and(test-char ". test-begin-line)
                 ( previous-text-character )
                fi
                if not(or(test-char " test-char ". ))
                 ( set-counter x 0 )
                fi
              )
              }}}
             while or(x not(test-char ".))
             forward-character
             if test-char " ;
              ( forward-character
                if not(test-char "  )
                 ( backward-character
                   backward-character
                 )
                fi
              )
             else
              ( backward-character
              )
             fi
           )
          while not(test-char " )
          }}}
          while or(test-char "  and(test-char ". test-begin-line))
           ( if and(test-char ". test-begin-line) ( end-of-line ) fi
             forward-text-character
             if test-bottom ( failed ) fi
           )
        )
     )
  )
  }}}
@fi
