Lines Matching refs:el
62 cv_undo(EditLine *el) in cv_undo() argument
64 c_undo_t *vu = &el->el_chared.c_undo; in cv_undo()
65 c_redo_t *r = &el->el_chared.c_redo; in cv_undo()
69 size = (size_t)(el->el_line.lastchar - el->el_line.buffer); in cv_undo()
71 vu->cursor = (int)(el->el_line.cursor - el->el_line.buffer); in cv_undo()
72 (void)memcpy(vu->buf, el->el_line.buffer, size * sizeof(*vu->buf)); in cv_undo()
75 r->count = el->el_state.doingarg ? el->el_state.argument : 0; in cv_undo()
76 r->action = el->el_chared.c_vcmd.action; in cv_undo()
78 r->cmd = el->el_state.thiscmd; in cv_undo()
79 r->ch = el->el_state.thisch; in cv_undo()
86 cv_yank(EditLine *el, const wchar_t *ptr, int size) in cv_yank() argument
88 c_kill_t *k = &el->el_chared.c_kill; in cv_yank()
99 c_insert(EditLine *el, int num) in c_insert() argument
103 if (el->el_line.lastchar + num >= el->el_line.limit) { in c_insert()
104 if (!ch_enlargebufs(el, (size_t)num)) in c_insert()
108 if (el->el_line.cursor < el->el_line.lastchar) { in c_insert()
110 for (cp = el->el_line.lastchar; cp >= el->el_line.cursor; cp--) in c_insert()
113 el->el_line.lastchar += num; in c_insert()
121 c_delafter(EditLine *el, int num) in c_delafter() argument
124 if (el->el_line.cursor + num > el->el_line.lastchar) in c_delafter()
125 num = (int)(el->el_line.lastchar - el->el_line.cursor); in c_delafter()
127 if (el->el_map.current != el->el_map.emacs) { in c_delafter()
128 cv_undo(el); in c_delafter()
129 cv_yank(el, el->el_line.cursor, num); in c_delafter()
135 for (cp = el->el_line.cursor; cp <= el->el_line.lastchar; cp++) in c_delafter()
138 el->el_line.lastchar -= num; in c_delafter()
147 c_delafter1(EditLine *el) in c_delafter1() argument
151 for (cp = el->el_line.cursor; cp <= el->el_line.lastchar; cp++) in c_delafter1()
154 el->el_line.lastchar--; in c_delafter1()
162 c_delbefore(EditLine *el, int num) in c_delbefore() argument
165 if (el->el_line.cursor - num < el->el_line.buffer) in c_delbefore()
166 num = (int)(el->el_line.cursor - el->el_line.buffer); in c_delbefore()
168 if (el->el_map.current != el->el_map.emacs) { in c_delbefore()
169 cv_undo(el); in c_delbefore()
170 cv_yank(el, el->el_line.cursor - num, num); in c_delbefore()
176 for (cp = el->el_line.cursor - num; in c_delbefore()
177 &cp[num] <= el->el_line.lastchar; in c_delbefore()
181 el->el_line.lastchar -= num; in c_delbefore()
190 c_delbefore1(EditLine *el) in c_delbefore1() argument
194 for (cp = el->el_line.cursor - 1; cp <= el->el_line.lastchar; cp++) in c_delbefore1()
197 el->el_line.lastchar--; in c_delbefore1()
281 cv_next_word(EditLine *el, wchar_t *p, wchar_t *high, int n, in cv_next_word() argument
294 if (n || el->el_chared.c_vcmd.action != (DELETE|INSERT)) in cv_next_word()
339 cv_delfini(EditLine *el) in cv_delfini() argument
342 int action = el->el_chared.c_vcmd.action; in cv_delfini()
345 el->el_map.current = el->el_map.key; in cv_delfini()
347 if (el->el_chared.c_vcmd.pos == 0) in cv_delfini()
351 size = (int)(el->el_line.cursor - el->el_chared.c_vcmd.pos); in cv_delfini()
354 el->el_line.cursor = el->el_chared.c_vcmd.pos; in cv_delfini()
357 cv_yank(el, el->el_line.cursor, size); in cv_delfini()
359 cv_yank(el, el->el_line.cursor + size, -size); in cv_delfini()
362 c_delafter(el, size); in cv_delfini()
363 re_refresh_cursor(el); in cv_delfini()
365 c_delbefore(el, -size); in cv_delfini()
366 el->el_line.cursor += size; in cv_delfini()
369 el->el_chared.c_vcmd.action = NOP; in cv_delfini()
399 ch_init(EditLine *el) in ch_init() argument
401 el->el_line.buffer = el_calloc(EL_BUFSIZ, in ch_init()
402 sizeof(*el->el_line.buffer)); in ch_init()
403 if (el->el_line.buffer == NULL) in ch_init()
406 el->el_line.cursor = el->el_line.buffer; in ch_init()
407 el->el_line.lastchar = el->el_line.buffer; in ch_init()
408 el->el_line.limit = &el->el_line.buffer[EL_BUFSIZ - EL_LEAVE]; in ch_init()
410 el->el_chared.c_undo.buf = el_calloc(EL_BUFSIZ, in ch_init()
411 sizeof(*el->el_chared.c_undo.buf)); in ch_init()
412 if (el->el_chared.c_undo.buf == NULL) in ch_init()
414 el->el_chared.c_undo.len = -1; in ch_init()
415 el->el_chared.c_undo.cursor = 0; in ch_init()
416 el->el_chared.c_redo.buf = el_calloc(EL_BUFSIZ, in ch_init()
417 sizeof(*el->el_chared.c_redo.buf)); in ch_init()
418 if (el->el_chared.c_redo.buf == NULL) in ch_init()
420 el->el_chared.c_redo.pos = el->el_chared.c_redo.buf; in ch_init()
421 el->el_chared.c_redo.lim = el->el_chared.c_redo.buf + EL_BUFSIZ; in ch_init()
422 el->el_chared.c_redo.cmd = ED_UNASSIGNED; in ch_init()
424 el->el_chared.c_vcmd.action = NOP; in ch_init()
425 el->el_chared.c_vcmd.pos = el->el_line.buffer; in ch_init()
427 el->el_chared.c_kill.buf = el_calloc(EL_BUFSIZ, in ch_init()
428 sizeof(*el->el_chared.c_kill.buf)); in ch_init()
429 if (el->el_chared.c_kill.buf == NULL) in ch_init()
431 el->el_chared.c_kill.mark = el->el_line.buffer; in ch_init()
432 el->el_chared.c_kill.last = el->el_chared.c_kill.buf; in ch_init()
433 el->el_chared.c_resizefun = NULL; in ch_init()
434 el->el_chared.c_resizearg = NULL; in ch_init()
435 el->el_chared.c_aliasfun = NULL; in ch_init()
436 el->el_chared.c_aliasarg = NULL; in ch_init()
438 el->el_map.current = el->el_map.key; in ch_init()
440 el->el_state.inputmode = MODE_INSERT; /* XXX: save a default */ in ch_init()
441 el->el_state.doingarg = 0; in ch_init()
442 el->el_state.metanext = 0; in ch_init()
443 el->el_state.argument = 1; in ch_init()
444 el->el_state.lastcmd = ED_UNASSIGNED; in ch_init()
448 ch_end(el); in ch_init()
456 ch_reset(EditLine *el) in ch_reset() argument
458 el->el_line.cursor = el->el_line.buffer; in ch_reset()
459 el->el_line.lastchar = el->el_line.buffer; in ch_reset()
461 el->el_chared.c_undo.len = -1; in ch_reset()
462 el->el_chared.c_undo.cursor = 0; in ch_reset()
464 el->el_chared.c_vcmd.action = NOP; in ch_reset()
465 el->el_chared.c_vcmd.pos = el->el_line.buffer; in ch_reset()
467 el->el_chared.c_kill.mark = el->el_line.buffer; in ch_reset()
469 el->el_map.current = el->el_map.key; in ch_reset()
471 el->el_state.inputmode = MODE_INSERT; /* XXX: save a default */ in ch_reset()
472 el->el_state.doingarg = 0; in ch_reset()
473 el->el_state.metanext = 0; in ch_reset()
474 el->el_state.argument = 1; in ch_reset()
475 el->el_state.lastcmd = ED_UNASSIGNED; in ch_reset()
477 el->el_history.eventno = 0; in ch_reset()
485 ch_enlargebufs(EditLine *el, size_t addlen) in ch_enlargebufs() argument
490 sz = (size_t)(el->el_line.limit - el->el_line.buffer + EL_LEAVE); in ch_enlargebufs()
504 newbuffer = el_realloc(el->el_line.buffer, newsz * sizeof(*newbuffer)); in ch_enlargebufs()
511 oldbuf = el->el_line.buffer; in ch_enlargebufs()
513 el->el_line.buffer = newbuffer; in ch_enlargebufs()
514 el->el_line.cursor = newbuffer + (el->el_line.cursor - oldbuf); in ch_enlargebufs()
515 el->el_line.lastchar = newbuffer + (el->el_line.lastchar - oldbuf); in ch_enlargebufs()
517 el->el_line.limit = &newbuffer[sz - EL_LEAVE]; in ch_enlargebufs()
522 newbuffer = el_realloc(el->el_chared.c_kill.buf, newsz * in ch_enlargebufs()
530 oldkbuf = el->el_chared.c_kill.buf; in ch_enlargebufs()
532 el->el_chared.c_kill.buf = newbuffer; in ch_enlargebufs()
533 el->el_chared.c_kill.last = newbuffer + in ch_enlargebufs()
534 (el->el_chared.c_kill.last - oldkbuf); in ch_enlargebufs()
535 el->el_chared.c_kill.mark = el->el_line.buffer + in ch_enlargebufs()
536 (el->el_chared.c_kill.mark - oldbuf); in ch_enlargebufs()
541 newbuffer = el_realloc(el->el_chared.c_undo.buf, in ch_enlargebufs()
548 el->el_chared.c_undo.buf = newbuffer; in ch_enlargebufs()
550 newbuffer = el_realloc(el->el_chared.c_redo.buf, in ch_enlargebufs()
554 el->el_chared.c_redo.pos = newbuffer + in ch_enlargebufs()
555 (el->el_chared.c_redo.pos - el->el_chared.c_redo.buf); in ch_enlargebufs()
556 el->el_chared.c_redo.lim = newbuffer + in ch_enlargebufs()
557 (el->el_chared.c_redo.lim - el->el_chared.c_redo.buf); in ch_enlargebufs()
558 el->el_chared.c_redo.buf = newbuffer; in ch_enlargebufs()
560 if (!hist_enlargebuf(el, sz, newsz)) in ch_enlargebufs()
564 el->el_line.limit = &el->el_line.buffer[newsz - EL_LEAVE]; in ch_enlargebufs()
565 if (el->el_chared.c_resizefun) in ch_enlargebufs()
566 (*el->el_chared.c_resizefun)(el, el->el_chared.c_resizearg); in ch_enlargebufs()
574 ch_end(EditLine *el) in ch_end() argument
576 el_free(el->el_line.buffer); in ch_end()
577 el->el_line.buffer = NULL; in ch_end()
578 el->el_line.limit = NULL; in ch_end()
579 el_free(el->el_chared.c_undo.buf); in ch_end()
580 el->el_chared.c_undo.buf = NULL; in ch_end()
581 el_free(el->el_chared.c_redo.buf); in ch_end()
582 el->el_chared.c_redo.buf = NULL; in ch_end()
583 el->el_chared.c_redo.pos = NULL; in ch_end()
584 el->el_chared.c_redo.lim = NULL; in ch_end()
585 el->el_chared.c_redo.cmd = ED_UNASSIGNED; in ch_end()
586 el_free(el->el_chared.c_kill.buf); in ch_end()
587 el->el_chared.c_kill.buf = NULL; in ch_end()
588 ch_reset(el); in ch_end()
596 el_winsertstr(EditLine *el, const wchar_t *s) in el_winsertstr() argument
602 if (el->el_line.lastchar + len >= el->el_line.limit) { in el_winsertstr()
603 if (!ch_enlargebufs(el, len)) in el_winsertstr()
607 c_insert(el, (int)len); in el_winsertstr()
609 *el->el_line.cursor++ = *s++; in el_winsertstr()
618 el_deletestr(EditLine *el, int n) in el_deletestr() argument
623 if (el->el_line.cursor < &el->el_line.buffer[n]) in el_deletestr()
626 c_delbefore(el, n); /* delete before dot */ in el_deletestr()
627 el->el_line.cursor -= n; in el_deletestr()
628 if (el->el_line.cursor < el->el_line.buffer) in el_deletestr()
629 el->el_line.cursor = el->el_line.buffer; in el_deletestr()
636 el_deletestr1(EditLine *el, int start, int end) in el_deletestr1() argument
644 line_length = (size_t)(el->el_line.lastchar - el->el_line.buffer); in el_deletestr1()
653 p1 = el->el_line.buffer + start; in el_deletestr1()
654 p2 = el->el_line.buffer + end; in el_deletestr1()
657 el->el_line.lastchar--; in el_deletestr1()
660 if (el->el_line.cursor < el->el_line.buffer) in el_deletestr1()
661 el->el_line.cursor = el->el_line.buffer; in el_deletestr1()
670 el_wreplacestr(EditLine *el, const wchar_t *s) in el_wreplacestr() argument
678 if (el->el_line.buffer + len >= el->el_line.limit) { in el_wreplacestr()
679 if (!ch_enlargebufs(el, len)) in el_wreplacestr()
683 p = el->el_line.buffer; in el_wreplacestr()
687 el->el_line.buffer[len] = '\0'; in el_wreplacestr()
688 el->el_line.lastchar = el->el_line.buffer + len; in el_wreplacestr()
689 if (el->el_line.cursor > el->el_line.lastchar) in el_wreplacestr()
690 el->el_line.cursor = el->el_line.lastchar; in el_wreplacestr()
699 el_cursor(EditLine *el, int n) in el_cursor() argument
704 el->el_line.cursor += n; in el_cursor()
706 if (el->el_line.cursor < el->el_line.buffer) in el_cursor()
707 el->el_line.cursor = el->el_line.buffer; in el_cursor()
708 if (el->el_line.cursor > el->el_line.lastchar) in el_cursor()
709 el->el_line.cursor = el->el_line.lastchar; in el_cursor()
711 return (int)(el->el_line.cursor - el->el_line.buffer); in el_cursor()
718 c_gets(EditLine *el, wchar_t *buf, const wchar_t *prompt) in c_gets() argument
721 wchar_t *cp = el->el_line.buffer, ch; in c_gets()
731 el->el_line.cursor = cp; in c_gets()
733 el->el_line.lastchar = cp + 1; in c_gets()
734 re_refresh(el); in c_gets()
736 if (el_wgetc(el, &ch) != 1) { in c_gets()
737 ed_end_of_file(el, 0); in c_gets()
762 terminal_beep(el); in c_gets()
772 el->el_line.buffer[0] = '\0'; in c_gets()
773 el->el_line.lastchar = el->el_line.buffer; in c_gets()
774 el->el_line.cursor = el->el_line.buffer; in c_gets()
783 c_hpos(EditLine *el) in c_hpos() argument
790 if (el->el_line.cursor == el->el_line.buffer) in c_hpos()
793 for (ptr = el->el_line.cursor - 1; in c_hpos()
794 ptr >= el->el_line.buffer && *ptr != '\n'; in c_hpos()
797 return (int)(el->el_line.cursor - ptr - 1); in c_hpos()
802 ch_resizefun(EditLine *el, el_zfunc_t f, void *a) in ch_resizefun() argument
804 el->el_chared.c_resizefun = f; in ch_resizefun()
805 el->el_chared.c_resizearg = a; in ch_resizefun()
810 ch_aliasfun(EditLine *el, el_afunc_t f, void *a) in ch_aliasfun() argument
812 el->el_chared.c_aliasfun = f; in ch_aliasfun()
813 el->el_chared.c_aliasarg = a; in ch_aliasfun()