MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / cv_csearch

Function cv_csearch

extern/editline/src/search.c:596–642  ·  view source on GitHub ↗

cv_csearch(): * Vi character search */

Source from the content-addressed store, hash-verified

594 * Vi character search
595 */
596protected el_action_t
597cv_csearch(EditLine *el, int direction, Int ch, int count, int tflag)
598{
599 Char *cp;
600
601 if (ch == 0)
602 return CC_ERROR;
603
604 if (ch == (Int)-1) {
605 Char c;
606 if (FUN(el,getc)(el, &c) != 1)
607 return ed_end_of_file(el, 0);
608 ch = c;
609 }
610
611 /* Save for ';' and ',' commands */
612 el->el_search.chacha = ch;
613 el->el_search.chadir = direction;
614 el->el_search.chatflg = (char)tflag;
615
616 cp = el->el_line.cursor;
617 while (count--) {
618 if ((Int)*cp == ch)
619 cp += direction;
620 for (;;cp += direction) {
621 if (cp >= el->el_line.lastchar)
622 return CC_ERROR;
623 if (cp < el->el_line.buffer)
624 return CC_ERROR;
625 if ((Int)*cp == ch)
626 break;
627 }
628 }
629
630 if (tflag)
631 cp -= direction;
632
633 el->el_line.cursor = cp;
634
635 if (el->el_chared.c_vcmd.action != NOP) {
636 if (direction > 0)
637 el->el_line.cursor++;
638 cv_delfini(el);
639 return CC_REFRESH;
640 }
641 return CC_CURSOR;
642}

Callers 6

vi_next_charFunction · 0.85
vi_prev_charFunction · 0.85
vi_to_next_charFunction · 0.85
vi_to_prev_charFunction · 0.85
vi_repeat_next_charFunction · 0.85
vi_repeat_prev_charFunction · 0.85

Calls 2

ed_end_of_fileFunction · 0.85
cv_delfiniFunction · 0.85

Tested by

no test coverage detected