• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/lukemftp-14/tnftp/libedit/

Lines Matching refs:el

43 #include "el.h"
48 #define EL_CURSOR(el) \
49 ((el)->el_line.cursor + (((el)->el_map.type == MAP_VI) && \
50 ((el)->el_map.current == (el)->el_map.alt)))
56 search_init(EditLine *el)
59 el->el_search.patbuf = (char *) el_malloc(EL_BUFSIZ);
60 if (el->el_search.patbuf == NULL)
62 el->el_search.patlen = 0;
63 el->el_search.patdir = -1;
64 el->el_search.chacha = '\0';
65 el->el_search.chadir = CHAR_FWD;
66 el->el_search.chatflg = 0;
75 search_end(EditLine *el)
78 el_free((ptr_t) el->el_search.patbuf);
79 el->el_search.patbuf = NULL;
144 c_hmatch(EditLine *el, const char *str)
147 (void) fprintf(el->el_errfile, "match `%s' with `%s'\n",
148 el->el_search.patbuf, str);
151 return (el_match(str, el->el_search.patbuf));
159 c_setpat(EditLine *el)
161 if (el->el_state.lastcmd != ED_SEARCH_PREV_HISTORY &&
162 el->el_state.lastcmd != ED_SEARCH_NEXT_HISTORY) {
163 el->el_search.patlen = EL_CURSOR(el) - el->el_line.buffer;
164 if (el->el_search.patlen >= EL_BUFSIZ)
165 el->el_search.patlen = EL_BUFSIZ - 1;
166 if (el->el_search.patlen != 0) {
167 (void) strncpy(el->el_search.patbuf, el->el_line.buffer,
168 el->el_search.patlen);
169 el->el_search.patbuf[el->el_search.patlen] = '\0';
171 el->el_search.patlen = strlen(el->el_search.patbuf);
174 (void) fprintf(el->el_errfile, "\neventno = %d\n",
175 el->el_history.eventno);
176 (void) fprintf(el->el_errfile, "patlen = %d\n", el->el_search.patlen);
177 (void) fprintf(el->el_errfile, "patbuf = \"%s\"\n",
178 el->el_search.patbuf);
179 (void) fprintf(el->el_errfile, "cursor %d lastchar %d\n",
180 EL_CURSOR(el) - el->el_line.buffer,
181 el->el_line.lastchar - el->el_line.buffer);
190 ce_inc_search(EditLine *el, int dir)
196 char ch, *ocursor = el->el_line.cursor, oldpchar = pchar;
201 int ohisteventno = el->el_history.eventno;
202 int oldpatlen = el->el_search.patlen;
206 if (el->el_line.lastchar + sizeof(STRfwd) / sizeof(char) + 2 +
207 el->el_search.patlen >= el->el_line.limit)
212 if (el->el_search.patlen == 0) { /* first round */
216 el->el_search.patbuf[el->el_search.patlen++] = '.';
217 el->el_search.patbuf[el->el_search.patlen++] = '*';
223 *el->el_line.lastchar++ = '\n';
225 *cp; *el->el_line.lastchar++ = *cp++)
227 *el->el_line.lastchar++ = pchar;
228 for (cp = &el->el_search.patbuf[LEN];
229 cp < &el->el_search.patbuf[el->el_search.patlen];
230 *el->el_line.lastchar++ = *cp++)
232 *el->el_line.lastchar = '\0';
233 re_refresh(el);
235 if (el_getc(el, &ch) != 1)
236 return (ed_end_of_file(el, 0));
238 switch (el->el_map.current[(unsigned char) ch]) {
241 if (el->el_search.patlen >= EL_BUFSIZ - LEN)
242 term_beep(el);
244 el->el_search.patbuf[el->el_search.patlen++] =
246 *el->el_line.lastchar++ = ch;
247 *el->el_line.lastchar = '\0';
248 re_refresh(el);
264 if (el->el_search.patlen > LEN)
267 term_beep(el);
279 for (cp = &el->el_search.patbuf[LEN];; cp++)
280 if (cp >= &el->el_search.patbuf[
281 el->el_search.patlen]) {
282 el->el_line.cursor +=
283 el->el_search.patlen - LEN - 1;
284 cp = c__next_word(el->el_line.cursor,
285 el->el_line.lastchar, 1,
287 while (el->el_line.cursor < cp &&
288 *el->el_line.cursor != '\n') {
289 if (el->el_search.patlen >=
291 term_beep(el);
294 el->el_search.patbuf[el->el_search.patlen++] =
295 *el->el_line.cursor;
296 *el->el_line.lastchar++ =
297 *el->el_line.cursor++;
299 el->el_line.cursor = ocursor;
300 *el->el_line.lastchar = '\0';
301 re_refresh(el);
304 term_beep(el);
311 el_push(el, endcmd);
322 while (el->el_line.lastchar > el->el_line.buffer &&
323 *el->el_line.lastchar != '\n')
324 *el->el_line.lastchar-- = '\0';
325 *el->el_line.lastchar = '\0';
330 for (cp = &el->el_search.patbuf[el->el_search.patlen-1],
332 cp >= &el->el_search.patbuf[LEN];
338 if (el->el_search.patlen > LEN && ch != '[') {
341 el->el_history.eventno =
343 if (hist_get(el) == CC_ERROR)
344 /* el->el_history.event
347 (void) hist_get(el);
348 el->el_line.cursor = newdir ==
350 el->el_line.lastchar :
351 el->el_line.buffer;
353 el->el_line.cursor +=
359 el->el_search.patbuf[el->el_search.patlen++] =
361 el->el_search.patbuf[el->el_search.patlen++] =
364 el->el_search.patbuf[el->el_search.patlen] =
366 if (el->el_line.cursor < el->el_line.buffer ||
367 el->el_line.cursor > el->el_line.lastchar ||
368 (ret = ce_search_line(el, newdir))
371 el->el_state.lastcmd =
374 ed_search_prev_history(el, 0) :
375 ed_search_next_history(el, 0);
377 el->el_line.cursor = newdir ==
379 el->el_line.lastchar :
380 el->el_line.buffer;
381 (void) ce_search_line(el,
385 el->el_search.patlen -= LEN;
386 el->el_search.patbuf[el->el_search.patlen] =
389 term_beep(el);
390 if (el->el_history.eventno !=
392 el->el_history.eventno =
394 if (hist_get(el) == CC_ERROR)
397 el->el_line.cursor = ocursor;
403 ret = ce_inc_search(el, newdir);
416 el->el_search.patlen = oldpatlen;
417 if (el->el_history.eventno != ohisteventno) {
418 el->el_history.eventno = ohisteventno;
419 if (hist_get(el) == CC_ERROR)
422 el->el_line.cursor = ocursor;
424 re_refresh(el);
436 cv_search(EditLine *el, int dir)
448 el->el_search.patdir = dir;
450 tmplen = c_gets(el, &tmpbuf[LEN],
463 if (el->el_search.patlen == 0) {
464 re_refresh(el);
468 if (el->el_search.patbuf[0] != '.' &&
469 el->el_search.patbuf[0] != '*') {
470 (void) strncpy(tmpbuf, el->el_search.patbuf,
472 el->el_search.patbuf[0] = '.';
473 el->el_search.patbuf[1] = '*';
474 (void) strncpy(&el->el_search.patbuf[2], tmpbuf,
476 el->el_search.patlen++;
477 el->el_search.patbuf[el->el_search.patlen++] = '.';
478 el->el_search.patbuf[el->el_search.patlen++] = '*';
479 el->el_search.patbuf[el->el_search.patlen] = '\0';
488 (void) strncpy(el->el_search.patbuf, tmpbuf, EL_BUFSIZ - 1);
489 el->el_search.patlen = tmplen;
491 el->el_state.lastcmd = (el_action_t) dir; /* avoid c_setpat */
492 el->el_line.cursor = el->el_line.lastchar = el->el_line.buffer;
493 if ((dir == ED_SEARCH_PREV_HISTORY ? ed_search_prev_history(el, 0) :
494 ed_search_next_history(el, 0)) == CC_ERROR) {
495 re_refresh(el);
499 re_refresh(el);
500 return ed_newline(el, 0);
510 ce_search_line(EditLine *el, int dir)
512 char *cp = el->el_line.cursor;
513 char *pattern = el->el_search.patbuf;
525 for (; cp >= el->el_line.buffer; cp--) {
528 el->el_line.cursor = cp;
535 for (; *cp != '\0' && cp < el->el_line.limit; cp++) {
538 el->el_line.cursor = cp;
552 cv_repeat_srch(EditLine *el, int c)
556 (void) fprintf(el->el_errfile, "dir %d patlen %d patbuf %s\n",
557 c, el->el_search.patlen, el->el_search.patbuf);
560 el->el_state.lastcmd = (el_action_t) c; /* Hack to stop c_setpat */
561 el->el_line.lastchar = el->el_line.buffer;
565 return (ed_search_next_history(el, 0));
567 return (ed_search_prev_history(el, 0));
578 cv_csearch(EditLine *el, int direction, int ch, int count, int tflag)
587 if (el_getc(el, &c) != 1)
588 return ed_end_of_file(el, 0);
593 el->el_search.chacha = ch;
594 el->el_search.chadir = direction;
595 el->el_search.chatflg = tflag;
597 cp = el->el_line.cursor;
602 if (cp >= el->el_line.lastchar)
604 if (cp < el->el_line.buffer)
614 el->el_line.cursor = cp;
616 if (el->el_chared.c_vcmd.action != NOP) {
618 el->el_line.cursor++;
619 cv_delfini(el);