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()
337 cv_delfini(EditLine *el) in cv_delfini() argument
340 int action = el->el_chared.c_vcmd.action; in cv_delfini()
343 el->el_map.current = el->el_map.key; in cv_delfini()
345 if (el->el_chared.c_vcmd.pos == 0) in cv_delfini()
349 size = (int)(el->el_line.cursor - el->el_chared.c_vcmd.pos); in cv_delfini()
352 el->el_line.cursor = el->el_chared.c_vcmd.pos; in cv_delfini()
355 cv_yank(el, el->el_line.cursor, size); in cv_delfini()
357 cv_yank(el, el->el_line.cursor + size, -size); in cv_delfini()
360 c_delafter(el, size); in cv_delfini()
361 re_refresh_cursor(el); in cv_delfini()
363 c_delbefore(el, -size); in cv_delfini()
364 el->el_line.cursor += size; in cv_delfini()
367 el->el_chared.c_vcmd.action = NOP; in cv_delfini()
397 ch_init(EditLine *el) in ch_init() argument
399 el->el_line.buffer = el_calloc(EL_BUFSIZ, in ch_init()
400 sizeof(*el->el_line.buffer)); in ch_init()
401 if (el->el_line.buffer == NULL) in ch_init()
404 el->el_line.cursor = el->el_line.buffer; in ch_init()
405 el->el_line.lastchar = el->el_line.buffer; in ch_init()
406 el->el_line.limit = &el->el_line.buffer[EL_BUFSIZ - EL_LEAVE]; in ch_init()
408 el->el_chared.c_undo.buf = el_calloc(EL_BUFSIZ, in ch_init()
409 sizeof(*el->el_chared.c_undo.buf)); in ch_init()
410 if (el->el_chared.c_undo.buf == NULL) in ch_init()
412 el->el_chared.c_undo.len = -1; in ch_init()
413 el->el_chared.c_undo.cursor = 0; in ch_init()
414 el->el_chared.c_redo.buf = el_calloc(EL_BUFSIZ, in ch_init()
415 sizeof(*el->el_chared.c_redo.buf)); in ch_init()
416 if (el->el_chared.c_redo.buf == NULL) in ch_init()
418 el->el_chared.c_redo.pos = el->el_chared.c_redo.buf; in ch_init()
419 el->el_chared.c_redo.lim = el->el_chared.c_redo.buf + EL_BUFSIZ; in ch_init()
420 el->el_chared.c_redo.cmd = ED_UNASSIGNED; in ch_init()
422 el->el_chared.c_vcmd.action = NOP; in ch_init()
423 el->el_chared.c_vcmd.pos = el->el_line.buffer; in ch_init()
425 el->el_chared.c_kill.buf = el_calloc(EL_BUFSIZ, in ch_init()
426 sizeof(*el->el_chared.c_kill.buf)); in ch_init()
427 if (el->el_chared.c_kill.buf == NULL) in ch_init()
429 el->el_chared.c_kill.mark = el->el_line.buffer; in ch_init()
430 el->el_chared.c_kill.last = el->el_chared.c_kill.buf; in ch_init()
431 el->el_chared.c_resizefun = NULL; in ch_init()
432 el->el_chared.c_resizearg = NULL; in ch_init()
433 el->el_chared.c_aliasfun = NULL; in ch_init()
434 el->el_chared.c_aliasarg = NULL; in ch_init()
436 el->el_map.current = el->el_map.key; in ch_init()
438 el->el_state.inputmode = MODE_INSERT; /* XXX: save a default */ in ch_init()
439 el->el_state.doingarg = 0; in ch_init()
440 el->el_state.metanext = 0; in ch_init()
441 el->el_state.argument = 1; in ch_init()
442 el->el_state.lastcmd = ED_UNASSIGNED; in ch_init()
451 ch_reset(EditLine *el) in ch_reset() argument
453 el->el_line.cursor = el->el_line.buffer; in ch_reset()
454 el->el_line.lastchar = el->el_line.buffer; in ch_reset()
456 el->el_chared.c_undo.len = -1; in ch_reset()
457 el->el_chared.c_undo.cursor = 0; in ch_reset()
459 el->el_chared.c_vcmd.action = NOP; in ch_reset()
460 el->el_chared.c_vcmd.pos = el->el_line.buffer; in ch_reset()
462 el->el_chared.c_kill.mark = el->el_line.buffer; in ch_reset()
464 el->el_map.current = el->el_map.key; in ch_reset()
466 el->el_state.inputmode = MODE_INSERT; /* XXX: save a default */ in ch_reset()
467 el->el_state.doingarg = 0; in ch_reset()
468 el->el_state.metanext = 0; in ch_reset()
469 el->el_state.argument = 1; in ch_reset()
470 el->el_state.lastcmd = ED_UNASSIGNED; in ch_reset()
472 el->el_history.eventno = 0; in ch_reset()
480 ch_enlargebufs(EditLine *el, size_t addlen) in ch_enlargebufs() argument
485 sz = (size_t)(el->el_line.limit - el->el_line.buffer + EL_LEAVE); in ch_enlargebufs()
499 newbuffer = el_realloc(el->el_line.buffer, newsz * sizeof(*newbuffer)); in ch_enlargebufs()
506 oldbuf = el->el_line.buffer; in ch_enlargebufs()
508 el->el_line.buffer = newbuffer; in ch_enlargebufs()
509 el->el_line.cursor = newbuffer + (el->el_line.cursor - oldbuf); in ch_enlargebufs()
510 el->el_line.lastchar = newbuffer + (el->el_line.lastchar - oldbuf); in ch_enlargebufs()
512 el->el_line.limit = &newbuffer[sz - EL_LEAVE]; in ch_enlargebufs()
517 newbuffer = el_realloc(el->el_chared.c_kill.buf, newsz * in ch_enlargebufs()
525 oldkbuf = el->el_chared.c_kill.buf; in ch_enlargebufs()
527 el->el_chared.c_kill.buf = newbuffer; in ch_enlargebufs()
528 el->el_chared.c_kill.last = newbuffer + in ch_enlargebufs()
529 (el->el_chared.c_kill.last - oldkbuf); in ch_enlargebufs()
530 el->el_chared.c_kill.mark = el->el_line.buffer + in ch_enlargebufs()
531 (el->el_chared.c_kill.mark - oldbuf); in ch_enlargebufs()
536 newbuffer = el_realloc(el->el_chared.c_undo.buf, in ch_enlargebufs()
543 el->el_chared.c_undo.buf = newbuffer; in ch_enlargebufs()
545 newbuffer = el_realloc(el->el_chared.c_redo.buf, in ch_enlargebufs()
549 el->el_chared.c_redo.pos = newbuffer + in ch_enlargebufs()
550 (el->el_chared.c_redo.pos - el->el_chared.c_redo.buf); in ch_enlargebufs()
551 el->el_chared.c_redo.lim = newbuffer + in ch_enlargebufs()
552 (el->el_chared.c_redo.lim - el->el_chared.c_redo.buf); in ch_enlargebufs()
553 el->el_chared.c_redo.buf = newbuffer; in ch_enlargebufs()
555 if (!hist_enlargebuf(el, sz, newsz)) in ch_enlargebufs()
559 el->el_line.limit = &el->el_line.buffer[newsz - EL_LEAVE]; in ch_enlargebufs()
560 if (el->el_chared.c_resizefun) in ch_enlargebufs()
561 (*el->el_chared.c_resizefun)(el, el->el_chared.c_resizearg); in ch_enlargebufs()
569 ch_end(EditLine *el) in ch_end() argument
571 el_free(el->el_line.buffer); in ch_end()
572 el->el_line.buffer = NULL; in ch_end()
573 el->el_line.limit = NULL; in ch_end()
574 el_free(el->el_chared.c_undo.buf); in ch_end()
575 el->el_chared.c_undo.buf = NULL; in ch_end()
576 el_free(el->el_chared.c_redo.buf); in ch_end()
577 el->el_chared.c_redo.buf = NULL; in ch_end()
578 el->el_chared.c_redo.pos = NULL; in ch_end()
579 el->el_chared.c_redo.lim = NULL; in ch_end()
580 el->el_chared.c_redo.cmd = ED_UNASSIGNED; in ch_end()
581 el_free(el->el_chared.c_kill.buf); in ch_end()
582 el->el_chared.c_kill.buf = NULL; in ch_end()
583 ch_reset(el); in ch_end()
591 el_winsertstr(EditLine *el, const wchar_t *s) in el_winsertstr() argument
597 if (el->el_line.lastchar + len >= el->el_line.limit) { in el_winsertstr()
598 if (!ch_enlargebufs(el, len)) in el_winsertstr()
602 c_insert(el, (int)len); in el_winsertstr()
604 *el->el_line.cursor++ = *s++; in el_winsertstr()
613 el_deletestr(EditLine *el, int n) in el_deletestr() argument
618 if (el->el_line.cursor < &el->el_line.buffer[n]) in el_deletestr()
621 c_delbefore(el, n); /* delete before dot */ in el_deletestr()
622 el->el_line.cursor -= n; in el_deletestr()
623 if (el->el_line.cursor < el->el_line.buffer) in el_deletestr()
624 el->el_line.cursor = el->el_line.buffer; in el_deletestr()
631 el_cursor(EditLine *el, int n) in el_cursor() argument
636 el->el_line.cursor += n; in el_cursor()
638 if (el->el_line.cursor < el->el_line.buffer) in el_cursor()
639 el->el_line.cursor = el->el_line.buffer; in el_cursor()
640 if (el->el_line.cursor > el->el_line.lastchar) in el_cursor()
641 el->el_line.cursor = el->el_line.lastchar; in el_cursor()
643 return (int)(el->el_line.cursor - el->el_line.buffer); in el_cursor()
650 c_gets(EditLine *el, wchar_t *buf, const wchar_t *prompt) in c_gets() argument
653 wchar_t *cp = el->el_line.buffer, ch; in c_gets()
663 el->el_line.cursor = cp; in c_gets()
665 el->el_line.lastchar = cp + 1; in c_gets()
666 re_refresh(el); in c_gets()
668 if (el_wgetc(el, &ch) != 1) { in c_gets()
669 ed_end_of_file(el, 0); in c_gets()
694 terminal_beep(el); in c_gets()
704 el->el_line.buffer[0] = '\0'; in c_gets()
705 el->el_line.lastchar = el->el_line.buffer; in c_gets()
706 el->el_line.cursor = el->el_line.buffer; in c_gets()
715 c_hpos(EditLine *el) in c_hpos() argument
722 if (el->el_line.cursor == el->el_line.buffer) in c_hpos()
725 for (ptr = el->el_line.cursor - 1; in c_hpos()
726 ptr >= el->el_line.buffer && *ptr != '\n'; in c_hpos()
729 return (int)(el->el_line.cursor - ptr - 1); in c_hpos()
734 ch_resizefun(EditLine *el, el_zfunc_t f, void *a) in ch_resizefun() argument
736 el->el_chared.c_resizefun = f; in ch_resizefun()
737 el->el_chared.c_resizearg = a; in ch_resizefun()
742 ch_aliasfun(EditLine *el, el_afunc_t f, void *a) in ch_aliasfun() argument
744 el->el_chared.c_aliasfun = f; in ch_aliasfun()
745 el->el_chared.c_aliasarg = a; in ch_aliasfun()