Lines Matching refs:el
59 #define EL_CURSOR(el) \ argument
60 ((el)->el_line.cursor + (((el)->el_map.type == MAP_VI) && \
61 ((el)->el_map.current == (el)->el_map.alt)))
67 search_init(EditLine *el) in search_init() argument
70 el->el_search.patbuf = el_malloc(EL_BUFSIZ * in search_init()
71 sizeof(*el->el_search.patbuf)); in search_init()
72 if (el->el_search.patbuf == NULL) in search_init()
74 el->el_search.patlen = 0; in search_init()
75 el->el_search.patdir = -1; in search_init()
76 el->el_search.chacha = '\0'; in search_init()
77 el->el_search.chadir = CHAR_FWD; in search_init()
78 el->el_search.chatflg = 0; in search_init()
87 search_end(EditLine *el) in search_end() argument
90 el_free(el->el_search.patbuf); in search_end()
91 el->el_search.patbuf = NULL; in search_end()
160 c_hmatch(EditLine *el, const Char *str) in c_hmatch() argument
163 (void) fprintf(el->el_errfile, "match `%s' with `%s'\n", in c_hmatch()
164 el->el_search.patbuf, str); in c_hmatch()
167 return el_match(str, el->el_search.patbuf); in c_hmatch()
175 c_setpat(EditLine *el) in c_setpat() argument
177 if (el->el_state.lastcmd != ED_SEARCH_PREV_HISTORY && in c_setpat()
178 el->el_state.lastcmd != ED_SEARCH_NEXT_HISTORY) { in c_setpat()
179 el->el_search.patlen = in c_setpat()
180 (size_t)(EL_CURSOR(el) - el->el_line.buffer); in c_setpat()
181 if (el->el_search.patlen >= EL_BUFSIZ) in c_setpat()
182 el->el_search.patlen = EL_BUFSIZ - 1; in c_setpat()
183 if (el->el_search.patlen != 0) { in c_setpat()
184 (void) Strncpy(el->el_search.patbuf, el->el_line.buffer, in c_setpat()
185 el->el_search.patlen); in c_setpat()
186 el->el_search.patbuf[el->el_search.patlen] = '\0'; in c_setpat()
188 el->el_search.patlen = Strlen(el->el_search.patbuf); in c_setpat()
191 (void) fprintf(el->el_errfile, "\neventno = %d\n", in c_setpat()
192 el->el_history.eventno); in c_setpat()
193 (void) fprintf(el->el_errfile, "patlen = %d\n", el->el_search.patlen); in c_setpat()
194 (void) fprintf(el->el_errfile, "patbuf = \"%s\"\n", in c_setpat()
195 el->el_search.patbuf); in c_setpat()
196 (void) fprintf(el->el_errfile, "cursor %d lastchar %d\n", in c_setpat()
197 EL_CURSOR(el) - el->el_line.buffer, in c_setpat()
198 el->el_line.lastchar - el->el_line.buffer); in c_setpat()
207 ce_inc_search(EditLine *el, int dir) in ce_inc_search() argument
213 Char ch, *ocursor = el->el_line.cursor, oldpchar = pchar; in ce_inc_search()
218 int ohisteventno = el->el_history.eventno; in ce_inc_search()
219 size_t oldpatlen = el->el_search.patlen; in ce_inc_search()
223 if (el->el_line.lastchar + sizeof(STRfwd) / in ce_inc_search()
224 sizeof(*el->el_line.lastchar) + 2 + in ce_inc_search()
225 el->el_search.patlen >= el->el_line.limit) in ce_inc_search()
230 if (el->el_search.patlen == 0) { /* first round */ in ce_inc_search()
234 el->el_search.patbuf[el->el_search.patlen++] = '.'; in ce_inc_search()
235 el->el_search.patbuf[el->el_search.patlen++] = '*'; in ce_inc_search()
241 *el->el_line.lastchar++ = '\n'; in ce_inc_search()
243 *cp; *el->el_line.lastchar++ = *cp++) in ce_inc_search()
245 *el->el_line.lastchar++ = pchar; in ce_inc_search()
246 for (cp = &el->el_search.patbuf[LEN]; in ce_inc_search()
247 cp < &el->el_search.patbuf[el->el_search.patlen]; in ce_inc_search()
248 *el->el_line.lastchar++ = *cp++) in ce_inc_search()
250 *el->el_line.lastchar = '\0'; in ce_inc_search()
251 re_refresh(el); in ce_inc_search()
253 if (FUN(el,getc)(el, &ch) != 1) in ce_inc_search()
254 return ed_end_of_file(el, 0); in ce_inc_search()
256 switch (el->el_map.current[(unsigned char) ch]) { in ce_inc_search()
259 if (el->el_search.patlen >= EL_BUFSIZ - LEN) in ce_inc_search()
260 terminal_beep(el); in ce_inc_search()
262 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
264 *el->el_line.lastchar++ = ch; in ce_inc_search()
265 *el->el_line.lastchar = '\0'; in ce_inc_search()
266 re_refresh(el); in ce_inc_search()
282 if (el->el_search.patlen > LEN) in ce_inc_search()
285 terminal_beep(el); in ce_inc_search()
297 for (cp = &el->el_search.patbuf[LEN];; cp++) in ce_inc_search()
298 if (cp >= &el->el_search.patbuf[ in ce_inc_search()
299 el->el_search.patlen]) { in ce_inc_search()
300 el->el_line.cursor += in ce_inc_search()
301 el->el_search.patlen - LEN - 1; in ce_inc_search()
302 cp = c__next_word(el->el_line.cursor, in ce_inc_search()
303 el->el_line.lastchar, 1, in ce_inc_search()
305 while (el->el_line.cursor < cp && in ce_inc_search()
306 *el->el_line.cursor != '\n') { in ce_inc_search()
307 if (el->el_search.patlen >= in ce_inc_search()
309 terminal_beep(el); in ce_inc_search()
312 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
313 *el->el_line.cursor; in ce_inc_search()
314 *el->el_line.lastchar++ = in ce_inc_search()
315 *el->el_line.cursor++; in ce_inc_search()
317 el->el_line.cursor = ocursor; in ce_inc_search()
318 *el->el_line.lastchar = '\0'; in ce_inc_search()
319 re_refresh(el); in ce_inc_search()
322 terminal_beep(el); in ce_inc_search()
329 FUN(el,push)(el, endcmd); in ce_inc_search() local
340 while (el->el_line.lastchar > el->el_line.buffer && in ce_inc_search()
341 *el->el_line.lastchar != '\n') in ce_inc_search()
342 *el->el_line.lastchar-- = '\0'; in ce_inc_search()
343 *el->el_line.lastchar = '\0'; in ce_inc_search()
348 for (cp = &el->el_search.patbuf[el->el_search.patlen-1], in ce_inc_search()
350 cp >= &el->el_search.patbuf[LEN]; in ce_inc_search()
356 if (el->el_search.patlen > LEN && ch != '[') { in ce_inc_search()
359 el->el_history.eventno = in ce_inc_search()
361 if (hist_get(el) == CC_ERROR) in ce_inc_search()
365 (void) hist_get(el); in ce_inc_search()
366 el->el_line.cursor = newdir == in ce_inc_search()
368 el->el_line.lastchar : in ce_inc_search()
369 el->el_line.buffer; in ce_inc_search()
371 el->el_line.cursor += in ce_inc_search()
377 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
379 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
382 el->el_search.patbuf[el->el_search.patlen] = in ce_inc_search()
384 if (el->el_line.cursor < el->el_line.buffer || in ce_inc_search()
385 el->el_line.cursor > el->el_line.lastchar || in ce_inc_search()
386 (ret = ce_search_line(el, newdir)) in ce_inc_search()
389 el->el_state.lastcmd = in ce_inc_search()
393 ed_search_prev_history(el, 0) : in ce_inc_search()
394 ed_search_next_history(el, 0)); in ce_inc_search()
396 el->el_line.cursor = newdir == in ce_inc_search()
398 el->el_line.lastchar : in ce_inc_search()
399 el->el_line.buffer; in ce_inc_search()
400 (void) ce_search_line(el, in ce_inc_search()
404 el->el_search.patlen -= LEN; in ce_inc_search()
405 el->el_search.patbuf[el->el_search.patlen] = in ce_inc_search()
408 terminal_beep(el); in ce_inc_search()
409 if (el->el_history.eventno != in ce_inc_search()
411 el->el_history.eventno = in ce_inc_search()
413 if (hist_get(el) == CC_ERROR) in ce_inc_search()
416 el->el_line.cursor = ocursor; in ce_inc_search()
422 ret = ce_inc_search(el, newdir); in ce_inc_search()
435 el->el_search.patlen = oldpatlen; in ce_inc_search()
436 if (el->el_history.eventno != ohisteventno) { in ce_inc_search()
437 el->el_history.eventno = ohisteventno; in ce_inc_search()
438 if (hist_get(el) == CC_ERROR) in ce_inc_search()
441 el->el_line.cursor = ocursor; in ce_inc_search()
443 re_refresh(el); in ce_inc_search()
455 cv_search(EditLine *el, int dir) in cv_search() argument
467 el->el_search.patdir = dir; in cv_search()
469 tmplen = c_gets(el, &tmpbuf[LEN], in cv_search()
482 if (el->el_search.patlen == 0) { in cv_search()
483 re_refresh(el); in cv_search()
487 if (el->el_search.patbuf[0] != '.' && in cv_search()
488 el->el_search.patbuf[0] != '*') { in cv_search()
489 (void) Strncpy(tmpbuf, el->el_search.patbuf, in cv_search()
491 el->el_search.patbuf[0] = '.'; in cv_search()
492 el->el_search.patbuf[1] = '*'; in cv_search()
493 (void) Strncpy(&el->el_search.patbuf[2], tmpbuf, in cv_search()
495 el->el_search.patlen++; in cv_search()
496 el->el_search.patbuf[el->el_search.patlen++] = '.'; in cv_search()
497 el->el_search.patbuf[el->el_search.patlen++] = '*'; in cv_search()
498 el->el_search.patbuf[el->el_search.patlen] = '\0'; in cv_search()
507 (void) Strncpy(el->el_search.patbuf, tmpbuf, EL_BUFSIZ - 1); in cv_search()
508 el->el_search.patlen = (size_t)tmplen; in cv_search()
510 el->el_state.lastcmd = (el_action_t) dir; /* avoid c_setpat */ in cv_search()
511 el->el_line.cursor = el->el_line.lastchar = el->el_line.buffer; in cv_search()
512 if ((dir == ED_SEARCH_PREV_HISTORY ? ed_search_prev_history(el, 0) : in cv_search()
513 ed_search_next_history(el, 0)) == CC_ERROR) { in cv_search()
514 re_refresh(el); in cv_search()
518 re_refresh(el); in cv_search()
519 return ed_newline(el, 0); in cv_search()
529 ce_search_line(EditLine *el, int dir) in ce_search_line() argument
531 Char *cp = el->el_line.cursor; in ce_search_line()
532 Char *pattern = el->el_search.patbuf; in ce_search_line()
544 for (; cp >= el->el_line.buffer; cp--) { in ce_search_line()
547 el->el_line.cursor = cp; in ce_search_line()
554 for (; *cp != '\0' && cp < el->el_line.limit; cp++) { in ce_search_line()
557 el->el_line.cursor = cp; in ce_search_line()
571 cv_repeat_srch(EditLine *el, Int c) in cv_repeat_srch() argument
575 (void) fprintf(el->el_errfile, "dir %d patlen %d patbuf %s\n", in cv_repeat_srch()
576 c, el->el_search.patlen, ct_encode_string(el->el_search.patbuf)); in cv_repeat_srch()
579 el->el_state.lastcmd = (el_action_t) c; /* Hack to stop c_setpat */ in cv_repeat_srch()
580 el->el_line.lastchar = el->el_line.buffer; in cv_repeat_srch()
584 return ed_search_next_history(el, 0); in cv_repeat_srch()
586 return ed_search_prev_history(el, 0); in cv_repeat_srch()
597 cv_csearch(EditLine *el, int direction, Int ch, int count, int tflag) in cv_csearch() argument
606 if (FUN(el,getc)(el, &c) != 1) in cv_csearch()
607 return ed_end_of_file(el, 0); in cv_csearch()
612 el->el_search.chacha = ch; in cv_csearch()
613 el->el_search.chadir = direction; in cv_csearch()
614 el->el_search.chatflg = (char)tflag; in cv_csearch()
616 cp = el->el_line.cursor; in cv_csearch()
621 if (cp >= el->el_line.lastchar) in cv_csearch()
623 if (cp < el->el_line.buffer) in cv_csearch()
633 el->el_line.cursor = cp; in cv_csearch()
635 if (el->el_chared.c_vcmd.action != NOP) { in cv_csearch()
637 el->el_line.cursor++; in cv_csearch()
638 cv_delfini(el); in cv_csearch()