size_t text_search_backward(Text *txt, size_t pos, Regex *regex) { size_t start = 0; size_t end = pos; RegexMatch match[1]; bool found = !text_search_range_backward(txt, start, end, regex, 1, match, 0); if (!found) { start = pos + 1; end = text_size(txt); found = start < end && !text_search_range_backward(txt, start, end - start, regex, 1, match, 0); } return found ? match[0].start : pos; }
Filerange text_object_search_backward(Text *txt, size_t pos, Regex *regex) { size_t start = 0; size_t end = pos; RegexMatch match[1]; bool found = !text_search_range_backward(txt, start, end, regex, 1, match, 0); if (found) return text_range_new(match[0].start, match[0].end); return text_range_empty(); }