Lines Matching refs:l
159 static void refreshLine(struct linenoiseState *l);
337 static void refreshSingleLine(struct linenoiseState *l) { in refreshSingleLine() argument
339 size_t plen = strlen(l->prompt); in refreshSingleLine()
340 char *buf = l->buf; in refreshSingleLine()
341 size_t len = l->len; in refreshSingleLine()
342 size_t pos = l->pos; in refreshSingleLine()
345 while((plen+pos) >= l->cols) { in refreshSingleLine()
350 while (plen+len > l->cols) { in refreshSingleLine()
359 abAppend(&ab,l->prompt,strlen(l->prompt)); in refreshSingleLine()
376 static void refreshMultiLine(struct linenoiseState *l) { in refreshMultiLine() argument
378 int plen = strlen(l->prompt); in refreshMultiLine()
379 int rows = (plen+l->len+l->cols)/l->cols; /* rows used by current buf. */ in refreshMultiLine()
380 int rpos = (plen+l->oldpos+l->cols)/l->cols; /* cursor relative row. */ in refreshMultiLine()
383 int old_rows = l->maxrows; in refreshMultiLine()
388 if (rows > (int)l->maxrows) l->maxrows = rows; in refreshMultiLine()
409 abAppend(&ab,l->prompt,strlen(l->prompt)); in refreshMultiLine()
410 abAppend(&ab,l->buf,l->len); in refreshMultiLine()
414 if (l->pos && in refreshMultiLine()
415 l->pos == l->len && in refreshMultiLine()
416 (l->pos+plen) % l->cols == 0) in refreshMultiLine()
422 if (rows > (int)l->maxrows) l->maxrows = rows; in refreshMultiLine()
426 rpos2 = (plen+l->pos+l->cols)/l->cols; /* current cursor relative row. */ in refreshMultiLine()
435 col = (plen+(int)l->pos) % (int)l->cols; in refreshMultiLine()
442 l->oldpos = l->pos; in refreshMultiLine()
450 static void refreshLine(struct linenoiseState *l) { in refreshLine() argument
452 refreshMultiLine(l); in refreshLine()
454 refreshSingleLine(l); in refreshLine()
461 linenoiseEditInsert(struct linenoiseState *l, char c) { in linenoiseEditInsert() argument
462 if (l->len < l->buflen) { in linenoiseEditInsert()
463 if (l->len == l->pos) { in linenoiseEditInsert()
464 l->buf[l->pos] = c; in linenoiseEditInsert()
465 l->pos++; in linenoiseEditInsert()
466 l->len++; in linenoiseEditInsert()
467 l->buf[l->len] = '\0'; in linenoiseEditInsert()
468 if ((!mlmode && l->plen+l->len < l->cols) /* || mlmode */) { in linenoiseEditInsert()
473 refreshLine(l); in linenoiseEditInsert()
476 memmove(l->buf+l->pos+1,l->buf+l->pos,l->len-l->pos); in linenoiseEditInsert()
477 l->buf[l->pos] = c; in linenoiseEditInsert()
478 l->len++; in linenoiseEditInsert()
479 l->pos++; in linenoiseEditInsert()
480 l->buf[l->len] = '\0'; in linenoiseEditInsert()
481 refreshLine(l); in linenoiseEditInsert()
489 linenoiseEditMoveLeft(struct linenoiseState *l) { in linenoiseEditMoveLeft() argument
490 if (l->pos > 0) { in linenoiseEditMoveLeft()
491 l->pos--; in linenoiseEditMoveLeft()
492 refreshLine(l); in linenoiseEditMoveLeft()
498 linenoiseEditMoveRight(struct linenoiseState *l) { in linenoiseEditMoveRight() argument
499 if (l->pos != l->len) { in linenoiseEditMoveRight()
500 l->pos++; in linenoiseEditMoveRight()
501 refreshLine(l); in linenoiseEditMoveRight()
507 linenoiseEditMoveHome(struct linenoiseState *l) { in linenoiseEditMoveHome() argument
508 if (l->pos != 0) { in linenoiseEditMoveHome()
509 l->pos = 0; in linenoiseEditMoveHome()
510 refreshLine(l); in linenoiseEditMoveHome()
516 linenoiseEditMoveEnd(struct linenoiseState *l) { in linenoiseEditMoveEnd() argument
517 if (l->pos != l->len) { in linenoiseEditMoveEnd()
518 l->pos = l->len; in linenoiseEditMoveEnd()
519 refreshLine(l); in linenoiseEditMoveEnd()
528 linenoiseEditHistoryNext(struct linenoiseState *l, int dir) { in linenoiseEditHistoryNext() argument
532 free(history[history_len - 1 - l->history_index]); in linenoiseEditHistoryNext()
533 history[history_len - 1 - l->history_index] = strdup(l->buf); in linenoiseEditHistoryNext()
535 l->history_index += (dir == LINENOISE_HISTORY_PREV) ? 1 : -1; in linenoiseEditHistoryNext()
536 if (l->history_index < 0) { in linenoiseEditHistoryNext()
537 l->history_index = 0; in linenoiseEditHistoryNext()
539 } else if (l->history_index >= history_len) { in linenoiseEditHistoryNext()
540 l->history_index = history_len-1; in linenoiseEditHistoryNext()
543 strncpy(l->buf,history[history_len - 1 - l->history_index],l->buflen); in linenoiseEditHistoryNext()
544 l->buf[l->buflen-1] = '\0'; in linenoiseEditHistoryNext()
545 l->len = l->pos = strlen(l->buf); in linenoiseEditHistoryNext()
546 refreshLine(l); in linenoiseEditHistoryNext()
553 linenoiseEditDelete(struct linenoiseState *l) { in linenoiseEditDelete() argument
554 if (l->len > 0 && l->pos < l->len) { in linenoiseEditDelete()
555 memmove(l->buf+l->pos,l->buf+l->pos+1,l->len-l->pos-1); in linenoiseEditDelete()
556 l->len--; in linenoiseEditDelete()
557 l->buf[l->len] = '\0'; in linenoiseEditDelete()
558 refreshLine(l); in linenoiseEditDelete()
564 linenoiseEditBackspace(struct linenoiseState *l) { in linenoiseEditBackspace() argument
565 if (l->pos > 0 && l->len > 0) { in linenoiseEditBackspace()
566 memmove(l->buf+l->pos-1,l->buf+l->pos,l->len-l->pos); in linenoiseEditBackspace()
567 l->pos--; in linenoiseEditBackspace()
568 l->len--; in linenoiseEditBackspace()
569 l->buf[l->len] = '\0'; in linenoiseEditBackspace()
570 refreshLine(l); in linenoiseEditBackspace()
577 linenoiseEditDeletePrevWord(struct linenoiseState *l) { in linenoiseEditDeletePrevWord() argument
578 size_t old_pos = l->pos; in linenoiseEditDeletePrevWord()
581 while (l->pos > 0 && l->buf[l->pos-1] == ' ') in linenoiseEditDeletePrevWord()
582 l->pos--; in linenoiseEditDeletePrevWord()
583 while (l->pos > 0 && l->buf[l->pos-1] != ' ') in linenoiseEditDeletePrevWord()
584 l->pos--; in linenoiseEditDeletePrevWord()
585 diff = old_pos - l->pos; in linenoiseEditDeletePrevWord()
586 memmove(l->buf+l->pos,l->buf+old_pos,l->len-old_pos+1); in linenoiseEditDeletePrevWord()
587 l->len -= diff; in linenoiseEditDeletePrevWord()
588 refreshLine(l); in linenoiseEditDeletePrevWord()
601 struct linenoiseState l; in linenoiseEdit() local
605 l.buf = buf; in linenoiseEdit()
606 l.buflen = buflen; in linenoiseEdit()
607 l.prompt = prompt; in linenoiseEdit()
608 l.plen = strlen(prompt); in linenoiseEdit()
609 l.oldpos = l.pos = 0; in linenoiseEdit()
610 l.len = 0; in linenoiseEdit()
611 l.cols = getColumns(); in linenoiseEdit()
612 l.maxrows = 0; in linenoiseEdit()
613 l.history_index = 0; in linenoiseEdit()
616 l.buf[0] = '\0'; in linenoiseEdit()
617 l.buflen--; /* Make sure there is always space for the nulterm */ in linenoiseEdit()
636 c = completeLine(&l); in linenoiseEdit()
638 if (c < 0) return l.len; in linenoiseEdit()
647 if (mlmode) linenoiseEditMoveEnd(&l); in linenoiseEdit()
648 return (int)l.len; in linenoiseEdit()
651 l.pos = l.len = 0; in linenoiseEdit()
652 refreshLine(&l); in linenoiseEdit()
656 linenoiseEditBackspace(&l); in linenoiseEdit()
659 if (l.len > 0) { in linenoiseEdit()
660 linenoiseEditDelete(&l); in linenoiseEdit()
664 if (l.pos > 0 && l.pos < l.len) { in linenoiseEdit()
665 int aux = buf[l.pos-1]; in linenoiseEdit()
666 buf[l.pos-1] = buf[l.pos]; in linenoiseEdit()
667 buf[l.pos] = aux; in linenoiseEdit()
668 if (l.pos != l.len-1) l.pos++; in linenoiseEdit()
669 refreshLine(&l); in linenoiseEdit()
673 linenoiseEditMoveLeft(&l); in linenoiseEdit()
676 linenoiseEditMoveRight(&l); in linenoiseEdit()
679 linenoiseEditHistoryNext(&l, LINENOISE_HISTORY_PREV); in linenoiseEdit()
682 linenoiseEditHistoryNext(&l, LINENOISE_HISTORY_NEXT); in linenoiseEdit()
699 linenoiseEditDelete(&l); in linenoiseEdit()
706 linenoiseEditHistoryNext(&l, LINENOISE_HISTORY_PREV); in linenoiseEdit()
709 linenoiseEditHistoryNext(&l, LINENOISE_HISTORY_NEXT); in linenoiseEdit()
712 linenoiseEditMoveRight(&l); in linenoiseEdit()
715 linenoiseEditMoveLeft(&l); in linenoiseEdit()
718 linenoiseEditMoveHome(&l); in linenoiseEdit()
721 linenoiseEditMoveEnd(&l); in linenoiseEdit()
731 linenoiseEditMoveHome(&l); in linenoiseEdit()
734 linenoiseEditMoveEnd(&l); in linenoiseEdit()
740 if (linenoiseEditInsert(&l,c)) return -1; in linenoiseEdit()
744 l.pos = l.len = 0; in linenoiseEdit()
745 refreshLine(&l); in linenoiseEdit()
748 buf[l.pos] = '\0'; in linenoiseEdit()
749 l.len = l.pos; in linenoiseEdit()
750 refreshLine(&l); in linenoiseEdit()
753 linenoiseEditMoveHome(&l); in linenoiseEdit()
756 linenoiseEditMoveEnd(&l); in linenoiseEdit()
760 refreshLine(&l); in linenoiseEdit()
763 linenoiseEditDeletePrevWord(&l); in linenoiseEdit()
767 return l.len; in linenoiseEdit()