Returns the position in text that ``opens'' the text ending at start, or #f if no opening position is found (either because a parenthesis mis-match is discovered or the end boundary was reached). The match must occur before end (inclusive). Note that start > end, since start specifies the starting position of the search, not the earliest buffer position to be considered.
Spaces immediately preceding start are skipped. If the text at start is a close parenthesis or close quote, then the matching position is the opening parenthesis or quote. If a comment immediately precedes start, then the comment is skipped as whitespace. If an opening parenthesis immediately precedes start, then the matching position is start - 1. Otherwise, the matching position is the first whitespace or parenthesis character before start.
If containing? is not #f, then the matching procedure is modified as follows:
If cache is not #f, it must be an instance of match-cache:%. A cache object can be used to speed up successive calls to paren:backward-match. However, a buffer using a cache must call the cache's invalidate method when the buffer is modified. Different caches should be used for forward and backward matching. See the match cache section for more information.