Lines Matching refs:el

63 #define	EL_CURSOR(el) \  argument
64 ((el)->el_line.cursor + (((el)->el_map.type == MAP_VI) && \
65 ((el)->el_map.current == (el)->el_map.alt)))
71 search_init(EditLine *el) in search_init() argument
74 el->el_search.patbuf = el_calloc(EL_BUFSIZ, in search_init()
75 sizeof(*el->el_search.patbuf)); in search_init()
76 if (el->el_search.patbuf == NULL) in search_init()
78 el->el_search.patbuf[0] = L'\0'; in search_init()
79 el->el_search.patlen = 0; in search_init()
80 el->el_search.patdir = -1; in search_init()
81 el->el_search.chacha = L'\0'; in search_init()
82 el->el_search.chadir = CHAR_FWD; in search_init()
83 el->el_search.chatflg = 0; in search_init()
92 search_end(EditLine *el) in search_end() argument
95 el_free(el->el_search.patbuf); in search_end()
96 el->el_search.patbuf = NULL; in search_end()
163 c_hmatch(EditLine *el, const wchar_t *str) in c_hmatch() argument
166 (void) fprintf(el->el_errfile, "match `%ls' with `%ls'\n", in c_hmatch()
167 el->el_search.patbuf, str); in c_hmatch()
170 return el_match(str, el->el_search.patbuf); in c_hmatch()
178 c_setpat(EditLine *el) in c_setpat() argument
180 if (el->el_state.lastcmd != ED_SEARCH_PREV_HISTORY && in c_setpat()
181 el->el_state.lastcmd != ED_SEARCH_NEXT_HISTORY) { in c_setpat()
182 el->el_search.patlen = in c_setpat()
183 (size_t)(EL_CURSOR(el) - el->el_line.buffer); in c_setpat()
184 if (el->el_search.patlen >= EL_BUFSIZ) in c_setpat()
185 el->el_search.patlen = EL_BUFSIZ - 1; in c_setpat()
186 (void) wcsncpy(el->el_search.patbuf, el->el_line.buffer, in c_setpat()
187 el->el_search.patlen); in c_setpat()
188 el->el_search.patbuf[el->el_search.patlen] = '\0'; 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 = %ld\n", el->el_search.patlen); in c_setpat()
194 (void) fprintf(el->el_errfile, "patbuf = \"%ls\"\n", in c_setpat()
195 el->el_search.patbuf); in c_setpat()
196 (void) fprintf(el->el_errfile, "cursor %ld lastchar %ld\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
212 wchar_t *ocursor = el->el_line.cursor, oldpchar = pchar, ch; in ce_inc_search()
217 int ohisteventno = el->el_history.eventno; in ce_inc_search()
218 size_t oldpatlen = el->el_search.patlen; in ce_inc_search()
222 if (el->el_line.lastchar + sizeof(STRfwd) / in ce_inc_search()
223 sizeof(*el->el_line.lastchar) + 2 + in ce_inc_search()
224 el->el_search.patlen >= el->el_line.limit) in ce_inc_search()
229 if (el->el_search.patlen == 0) { /* first round */ in ce_inc_search()
233 el->el_search.patbuf[el->el_search.patlen++] = '.'; in ce_inc_search()
234 el->el_search.patbuf[el->el_search.patlen++] = '*'; in ce_inc_search()
240 *el->el_line.lastchar++ = '\n'; in ce_inc_search()
242 *cp; *el->el_line.lastchar++ = *cp++) in ce_inc_search()
244 *el->el_line.lastchar++ = pchar; in ce_inc_search()
245 for (cp = &el->el_search.patbuf[LEN]; in ce_inc_search()
246 cp < &el->el_search.patbuf[el->el_search.patlen]; in ce_inc_search()
247 *el->el_line.lastchar++ = *cp++) in ce_inc_search()
249 *el->el_line.lastchar = '\0'; in ce_inc_search()
250 re_refresh(el); in ce_inc_search()
252 if (el_wgetc(el, &ch) != 1) in ce_inc_search()
253 return ed_end_of_file(el, 0); in ce_inc_search()
255 switch (el->el_map.current[(unsigned char) ch]) { in ce_inc_search()
258 if (el->el_search.patlen >= EL_BUFSIZ - LEN) in ce_inc_search()
259 terminal_beep(el); in ce_inc_search()
261 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
263 *el->el_line.lastchar++ = ch; in ce_inc_search()
264 *el->el_line.lastchar = '\0'; in ce_inc_search()
265 re_refresh(el); in ce_inc_search()
281 if (el->el_search.patlen > LEN) in ce_inc_search()
284 terminal_beep(el); in ce_inc_search()
296 for (cp = &el->el_search.patbuf[LEN];; cp++) in ce_inc_search()
297 if (cp >= &el->el_search.patbuf[ in ce_inc_search()
298 el->el_search.patlen]) { in ce_inc_search()
299 if (el->el_line.cursor == in ce_inc_search()
300 el->el_line.buffer) in ce_inc_search()
302 el->el_line.cursor += in ce_inc_search()
303 el->el_search.patlen - LEN - 1; in ce_inc_search()
304 cp = c__next_word(el->el_line.cursor, in ce_inc_search()
305 el->el_line.lastchar, 1, in ce_inc_search()
307 while (el->el_line.cursor < cp && in ce_inc_search()
308 *el->el_line.cursor != '\n') { in ce_inc_search()
309 if (el->el_search.patlen >= in ce_inc_search()
311 terminal_beep(el); in ce_inc_search()
314 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
315 *el->el_line.cursor; in ce_inc_search()
316 *el->el_line.lastchar++ = in ce_inc_search()
317 *el->el_line.cursor++; in ce_inc_search()
319 el->el_line.cursor = ocursor; in ce_inc_search()
320 *el->el_line.lastchar = '\0'; in ce_inc_search()
321 re_refresh(el); in ce_inc_search()
324 terminal_beep(el); in ce_inc_search()
331 el_wpush(el, endcmd); in ce_inc_search()
342 while (el->el_line.lastchar > el->el_line.buffer && in ce_inc_search()
343 *el->el_line.lastchar != '\n') in ce_inc_search()
344 *el->el_line.lastchar-- = '\0'; in ce_inc_search()
345 *el->el_line.lastchar = '\0'; in ce_inc_search()
350 for (cp = &el->el_search.patbuf[el->el_search.patlen-1], in ce_inc_search()
352 cp >= &el->el_search.patbuf[LEN]; in ce_inc_search()
358 if (el->el_search.patlen > LEN && ch != L'[') { in ce_inc_search()
361 el->el_history.eventno = in ce_inc_search()
363 if (hist_get(el) == CC_ERROR) in ce_inc_search()
367 (void) hist_get(el); in ce_inc_search()
368 el->el_line.cursor = newdir == in ce_inc_search()
370 el->el_line.lastchar : in ce_inc_search()
371 el->el_line.buffer; in ce_inc_search()
373 el->el_line.cursor += in ce_inc_search()
379 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
381 el->el_search.patbuf[el->el_search.patlen++] = in ce_inc_search()
384 el->el_search.patbuf[el->el_search.patlen] = in ce_inc_search()
386 if (el->el_line.cursor < el->el_line.buffer || in ce_inc_search()
387 el->el_line.cursor > el->el_line.lastchar || in ce_inc_search()
388 (ret = ce_search_line(el, newdir)) in ce_inc_search()
391 el->el_state.lastcmd = in ce_inc_search()
395 ed_search_prev_history(el, 0) : in ce_inc_search()
396 ed_search_next_history(el, 0)); in ce_inc_search()
398 el->el_line.cursor = newdir == in ce_inc_search()
400 el->el_line.lastchar : in ce_inc_search()
401 el->el_line.buffer; in ce_inc_search()
402 (void) ce_search_line(el, in ce_inc_search()
406 el->el_search.patlen -= LEN; in ce_inc_search()
407 el->el_search.patbuf[el->el_search.patlen] = in ce_inc_search()
410 terminal_beep(el); in ce_inc_search()
411 if (el->el_history.eventno != in ce_inc_search()
413 el->el_history.eventno = in ce_inc_search()
415 if (hist_get(el) == CC_ERROR) in ce_inc_search()
418 el->el_line.cursor = ocursor; in ce_inc_search()
424 ret = ce_inc_search(el, newdir); in ce_inc_search()
437 el->el_search.patlen = oldpatlen; in ce_inc_search()
438 if (el->el_history.eventno != ohisteventno) { in ce_inc_search()
439 el->el_history.eventno = ohisteventno; in ce_inc_search()
440 if (hist_get(el) == CC_ERROR) in ce_inc_search()
443 el->el_line.cursor = ocursor; in ce_inc_search()
445 re_refresh(el); in ce_inc_search()
457 cv_search(EditLine *el, int dir) in cv_search() argument
469 el->el_search.patdir = dir; in cv_search()
471 tmplen = c_gets(el, &tmpbuf[LEN], in cv_search()
484 if (el->el_search.patlen == 0) { in cv_search()
485 re_refresh(el); in cv_search()
489 if (el->el_search.patbuf[0] != '.' && in cv_search()
490 el->el_search.patbuf[0] != '*') { in cv_search()
491 (void) wcsncpy(tmpbuf, el->el_search.patbuf, in cv_search()
493 el->el_search.patbuf[0] = '.'; in cv_search()
494 el->el_search.patbuf[1] = '*'; in cv_search()
495 (void) wcsncpy(&el->el_search.patbuf[2], tmpbuf, in cv_search()
497 el->el_search.patlen++; in cv_search()
498 el->el_search.patbuf[el->el_search.patlen++] = '.'; in cv_search()
499 el->el_search.patbuf[el->el_search.patlen++] = '*'; in cv_search()
500 el->el_search.patbuf[el->el_search.patlen] = '\0'; in cv_search()
509 (void) wcsncpy(el->el_search.patbuf, tmpbuf, EL_BUFSIZ - 1); in cv_search()
510 el->el_search.patlen = (size_t)tmplen; in cv_search()
512 el->el_state.lastcmd = (el_action_t) dir; /* avoid c_setpat */ in cv_search()
513 el->el_line.cursor = el->el_line.lastchar = el->el_line.buffer; in cv_search()
514 if ((dir == ED_SEARCH_PREV_HISTORY ? ed_search_prev_history(el, 0) : in cv_search()
515 ed_search_next_history(el, 0)) == CC_ERROR) { in cv_search()
516 re_refresh(el); in cv_search()
520 re_refresh(el); in cv_search()
521 return ed_newline(el, 0); in cv_search()
531 ce_search_line(EditLine *el, int dir) in ce_search_line() argument
533 wchar_t *cp = el->el_line.cursor; in ce_search_line()
534 wchar_t *pattern = el->el_search.patbuf; in ce_search_line()
546 for (; cp >= el->el_line.buffer; cp--) { in ce_search_line()
549 el->el_line.cursor = cp; in ce_search_line()
556 for (; *cp != '\0' && cp < el->el_line.limit; cp++) { in ce_search_line()
559 el->el_line.cursor = cp; in ce_search_line()
573 cv_repeat_srch(EditLine *el, wint_t c) in cv_repeat_srch() argument
578 (void) fprintf(el->el_errfile, "dir %d patlen %ld patbuf %s\n", in cv_repeat_srch()
579 c, el->el_search.patlen, ct_encode_string(el->el_search.patbuf, &conv)); in cv_repeat_srch()
582 el->el_state.lastcmd = (el_action_t) c; /* Hack to stop c_setpat */ in cv_repeat_srch()
583 el->el_line.lastchar = el->el_line.buffer; in cv_repeat_srch()
587 return ed_search_next_history(el, 0); in cv_repeat_srch()
589 return ed_search_prev_history(el, 0); in cv_repeat_srch()
600 cv_csearch(EditLine *el, int direction, wint_t ch, int count, int tflag) in cv_csearch() argument
609 if (el_wgetc(el, &c) != 1) in cv_csearch()
610 return ed_end_of_file(el, 0); in cv_csearch()
615 el->el_search.chacha = ch; in cv_csearch()
616 el->el_search.chadir = direction; in cv_csearch()
617 el->el_search.chatflg = (char)tflag; in cv_csearch()
619 cp = el->el_line.cursor; in cv_csearch()
624 if (cp >= el->el_line.lastchar) in cv_csearch()
626 if (cp < el->el_line.buffer) in cv_csearch()
636 el->el_line.cursor = cp; in cv_csearch()
638 if (el->el_chared.c_vcmd.action != NOP) { in cv_csearch()
640 el->el_line.cursor++; in cv_csearch()
641 cv_delfini(el); in cv_csearch()