el_line
li = el_line(el);
const LineInfo *lf = el_line(el);
if (el->el_line.cursor < el->el_line.lastchar) {
for (cp = el->el_line.lastchar; cp >= el->el_line.cursor; cp--)
el->el_line.lastchar += num;
if (el->el_line.cursor + num > el->el_line.lastchar)
num = (int)(el->el_line.lastchar - el->el_line.cursor);
cv_yank(el, el->el_line.cursor, num);
for (cp = el->el_line.cursor; cp <= el->el_line.lastchar; cp++)
el->el_line.lastchar -= num;
for (cp = el->el_line.cursor; cp <= el->el_line.lastchar; cp++)
el->el_line.lastchar--;
if (el->el_line.cursor - num < el->el_line.buffer)
num = (int)(el->el_line.cursor - el->el_line.buffer);
cv_yank(el, el->el_line.cursor - num, num);
for (cp = el->el_line.cursor - num;
cp <= el->el_line.lastchar;
el->el_line.lastchar -= num;
for (cp = el->el_line.cursor - 1; cp <= el->el_line.lastchar; cp++)
el->el_line.lastchar--;
size = (int)(el->el_line.cursor - el->el_chared.c_vcmd.pos);
el->el_line.cursor = el->el_chared.c_vcmd.pos;
cv_yank(el, el->el_line.cursor, size);
cv_yank(el, el->el_line.cursor + size, -size);
el->el_line.cursor += size;
el->el_line.buffer = calloc(EL_BUFSIZ, sizeof(*el->el_line.buffer));
if (el->el_line.buffer == NULL)
el->el_line.cursor = el->el_line.buffer;
el->el_line.lastchar = el->el_line.buffer;
el->el_line.limit = &el->el_line.buffer[EL_BUFSIZ - EL_LEAVE];
el->el_chared.c_vcmd.pos = el->el_line.buffer;
el->el_chared.c_kill.mark = el->el_line.buffer;
el->el_line.cursor = el->el_line.buffer;
el->el_line.lastchar = el->el_line.buffer;
el->el_chared.c_vcmd.pos = el->el_line.buffer;
el->el_chared.c_kill.mark = el->el_line.buffer;
sz = el->el_line.limit - el->el_line.buffer + EL_LEAVE;
newbuffer = recallocarray(el->el_line.buffer, sz, newsz,
oldbuf = el->el_line.buffer;
el->el_line.buffer = newbuffer;
el->el_line.cursor = newbuffer + (el->el_line.cursor - oldbuf);
el->el_line.lastchar = newbuffer + (el->el_line.lastchar - oldbuf);
el->el_line.limit = &newbuffer[sz - EL_LEAVE];
el->el_chared.c_kill.mark = el->el_line.buffer +
el->el_line.limit = &el->el_line.buffer[newsz - EL_LEAVE];
free(el->el_line.buffer);
el->el_line.buffer = NULL;
el->el_line.limit = NULL;
if (el->el_line.lastchar + len >= el->el_line.limit) {
*el->el_line.cursor++ = *s++;
if (el->el_line.cursor < &el->el_line.buffer[n])
el->el_line.cursor -= n;
if (el->el_line.cursor < el->el_line.buffer)
el->el_line.cursor = el->el_line.buffer;
wchar_t *cp = el->el_line.buffer, ch;
el->el_line.cursor = cp;
el->el_line.lastchar = cp + 1;
size = el->el_line.lastchar - el->el_line.buffer;
vu->cursor = (int)(el->el_line.cursor - el->el_line.buffer);
(void)memcpy(vu->buf, el->el_line.buffer, size * sizeof(*vu->buf));
el->el_line.buffer[0] = '\0';
el->el_line.lastchar = el->el_line.buffer;
el->el_line.cursor = el->el_line.buffer;
if (el->el_line.cursor == el->el_line.buffer)
for (ptr = el->el_line.cursor - 1;
ptr >= el->el_line.buffer && *ptr != '\n';
return (int)(el->el_line.cursor - ptr - 1);
if (el->el_line.lastchar + num >= el->el_line.limit) {
if (el->el_line.cursor == el->el_line.buffer)
cp = c__prev_word(el->el_line.cursor, el->el_line.buffer,
for (p = cp, kp = el->el_chared.c_kill.buf; p < el->el_line.cursor; p++)
c_delbefore(el, (int)(el->el_line.cursor - cp));/* delete before dot */
el->el_line.cursor = cp;
if (el->el_line.cursor < el->el_line.buffer)
el->el_line.cursor = el->el_line.buffer; /* bounds check */
#define EL el->el_line
if (el->el_line.cursor == el->el_line.lastchar) {
if (el->el_line.cursor == el->el_line.buffer) {
el->el_line.cursor--;
if (el->el_line.cursor != el->el_line.buffer)
el->el_line.cursor--;
if (el->el_line.cursor >= el->el_line.lastchar &&
el->el_line.cursor > el->el_line.buffer)
el->el_line.cursor = el->el_line.lastchar - 1;
cp = el->el_line.cursor;
while (cp < el->el_line.lastchar)
el->el_line.lastchar = el->el_line.cursor;
el->el_line.cursor = el->el_line.lastchar;
el->el_line.cursor--;
el->el_line.cursor = el->el_line.buffer;
while (iswspace(*el->el_line.cursor))
el->el_line.cursor++;
if (el->el_line.cursor < el->el_line.lastchar) {
if (el->el_line.lastchar <= &el->el_line.buffer[1])
el->el_line.cursor++;
if (el->el_line.cursor > &el->el_line.buffer[1]) {
c = el->el_line.cursor[-2];
el->el_line.cursor[-2] = el->el_line.cursor[-1];
el->el_line.cursor[-1] = c;
wchar_t *lim = el->el_line.lastchar;
if (el->el_line.cursor >= lim ||
(el->el_line.cursor == lim - 1 &&
el->el_line.cursor += el->el_state.argument;
if (el->el_line.cursor > lim)
el->el_line.cursor = lim;
if (el->el_line.cursor == el->el_line.buffer)
el->el_line.cursor = c__prev_word(el->el_line.cursor,
el->el_line.buffer,
if (el->el_line.cursor > el->el_line.buffer) {
el->el_line.cursor -= el->el_state.argument;
if (el->el_line.cursor < el->el_line.buffer)
el->el_line.cursor = el->el_line.buffer;
*el->el_line.lastchar++ = '\n';
*el->el_line.lastchar = '\0';
if (el->el_line.cursor <= el->el_line.buffer)
el->el_line.cursor -= el->el_state.argument;
if (el->el_line.cursor < el->el_line.buffer)
el->el_line.cursor = el->el_line.buffer;
*el->el_line.lastchar = '\0'; /* just in case */
(void) wcsncpy(el->el_history.buf, el->el_line.buffer,
(el->el_line.lastchar - el->el_line.buffer);
*el->el_line.lastchar = '\0'; /* just in case */
*el->el_line.lastchar = '\0';
*el->el_line.lastchar = '\0'; /* just in case */
(void) wcsncpy(el->el_history.buf, el->el_line.buffer,
(el->el_line.lastchar - el->el_line.buffer);
if ((wcsncmp(hp, el->el_line.buffer, (size_t)
(el->el_line.lastchar - el->el_line.buffer)) ||
hp[el->el_line.lastchar - el->el_line.buffer]) &&
*el->el_line.lastchar = '\0'; /* just in case */
if ((wcsncmp(hp, el->el_line.buffer, (size_t)
(el->el_line.lastchar - el->el_line.buffer)) ||
hp[el->el_line.lastchar - el->el_line.buffer]) &&
if (*(ptr = el->el_line.cursor) == '\n')
for (; ptr >= el->el_line.buffer; ptr--)
for (ptr--; ptr >= el->el_line.buffer && *ptr != '\n'; ptr--)
nchars-- > 0 && ptr < el->el_line.lastchar && *ptr != '\n';
el->el_line.cursor = ptr;
if (el->el_line.lastchar + el->el_state.argument >=
for (ptr = el->el_line.cursor; ptr < el->el_line.lastchar; ptr++)
el->el_line.limit) {
nchars-- > 0 && ptr < el->el_line.lastchar && *ptr != '\n';
el->el_line.cursor = ptr;
|| el->el_line.cursor >= el->el_line.lastchar)
*el->el_line.cursor++ = c;
while (count-- && el->el_line.cursor < el->el_line.lastchar)
*el->el_line.cursor++ = c;
return (const LineInfoW *)(void *)&el->el_line;
el_line_t el_line; /* The current line information */
c_delafter(el, (int)(cp - el->el_line.cursor)); /* delete after dot */
if (el->el_line.cursor > el->el_line.lastchar)
el->el_line.cursor = el->el_line.lastchar;
if (el->el_line.lastchar +
el->el_line.limit)
el->el_chared.c_kill.mark = el->el_line.cursor;
cp = el->el_line.cursor;
el->el_line.cursor = cp;
cp = el->el_line.buffer;
while (cp < el->el_line.lastchar)
el->el_line.lastchar = el->el_line.buffer;
el->el_line.cursor = el->el_line.buffer;
if (el->el_chared.c_kill.mark > el->el_line.cursor) {
cp = el->el_line.cursor;
c_delafter(el, (int)(cp - el->el_line.cursor));
while (cp < el->el_line.cursor)
el->el_line.cursor = el->el_chared.c_kill.mark;
if (el->el_chared.c_kill.mark > el->el_line.cursor) {
cp = el->el_line.cursor;
while (cp < el->el_line.cursor)
if (el->el_line.cursor > &el->el_line.buffer[1]) {
c = el->el_line.cursor[-2];
el->el_line.cursor[-2] = el->el_line.cursor[-1];
el->el_line.cursor[-1] = c;
if (el->el_line.cursor == el->el_line.lastchar)
el->el_line.cursor = c__next_word(el->el_line.cursor,
el->el_line.lastchar,
ep = c__next_word(el->el_line.cursor, el->el_line.lastchar,
for (cp = el->el_line.cursor; cp < ep; cp++)
el->el_line.cursor = ep;
if (el->el_line.cursor > el->el_line.lastchar)
el->el_line.cursor = el->el_line.lastchar;
ep = c__next_word(el->el_line.cursor, el->el_line.lastchar,
for (cp = el->el_line.cursor; cp < ep; cp++) {
el->el_line.cursor = ep;
if (el->el_line.cursor > el->el_line.lastchar)
el->el_line.cursor = el->el_line.lastchar;
ep = c__next_word(el->el_line.cursor, el->el_line.lastchar,
for (cp = el->el_line.cursor; cp < ep; cp++)
el->el_line.cursor = ep;
if (el->el_line.cursor > el->el_line.lastchar)
el->el_line.cursor = el->el_line.lastchar;
el->el_chared.c_kill.mark = el->el_line.cursor;
cp = el->el_line.cursor;
el->el_line.cursor = el->el_chared.c_kill.mark;
if (el->el_line.cursor == el->el_line.buffer)
oldc = el->el_line.cursor;
cp = c__prev_word(el->el_line.cursor, el->el_line.buffer,
for (dp = oldc; cp < oldc && dp < el->el_line.lastchar; cp++)
el->el_line.cursor = dp;/* put cursor at end */
if (el->el_line.cursor <= el->el_line.buffer)
el->el_line.cursor -= el->el_state.argument;
if (el->el_line.cursor < el->el_line.buffer)
el->el_line.cursor = el->el_line.buffer;
if (el->el_line.cursor == el->el_line.lastchar) {
if (el->el_line.cursor == el->el_line.buffer) {
if (el->el_line.cursor > el->el_line.lastchar)
el->el_line.cursor = el->el_line.lastchar;
if (el->el_line.cursor == el->el_line.lastchar)
cp = c__next_word(el->el_line.cursor, el->el_line.lastchar,
for (p = el->el_line.cursor, kp = el->el_chared.c_kill.buf; p < cp; p++)
(void) wcsncpy(el->el_line.buffer, el->el_history.buf,
el->el_line.lastchar = el->el_line.buffer +
el->el_line.cursor = el->el_line.buffer;
el->el_line.cursor = el->el_line.lastchar;
(void) wcsncpy(el->el_line.buffer, hp,
(size_t)(el->el_line.limit - el->el_line.buffer));
el->el_line.buffer[el->el_line.limit - el->el_line.buffer - 1] = '\0';
el->el_line.lastchar = el->el_line.buffer + wcslen(el->el_line.buffer);
if (el->el_line.lastchar > el->el_line.buffer
&& el->el_line.lastchar[-1] == '\n')
el->el_line.lastchar--;
if (el->el_line.lastchar > el->el_line.buffer
&& el->el_line.lastchar[-1] == ' ')
el->el_line.lastchar--;
el->el_line.cursor = el->el_line.buffer;
el->el_line.cursor = el->el_line.lastchar;
const LineInfo *el_line(EditLine *);
cp = el->el_line.buffer;
if (cp + 1 >= el->el_line.limit) {
idx = (cp - el->el_line.buffer);
cp = &el->el_line.buffer[idx];
cp = el->el_line.buffer;
cp = el->el_line.buffer;
cp = el->el_line.lastchar;
if (cp + 1 >= el->el_line.limit) {
idx = (cp - el->el_line.buffer);
cp = &el->el_line.buffer[idx];
cp = el->el_line.buffer;
*el->el_line.lastchar++ = CONTROL('d');
el->el_line.cursor = el->el_line.lastchar;
num = (int)(el->el_line.lastchar - el->el_line.buffer);
*nread = (int)(el->el_line.lastchar - el->el_line.buffer);
el->el_line.cursor = el->el_line.lastchar = cp;
*nread = (int)(el->el_line.cursor - el->el_line.buffer);
return el->el_line.buffer;
const LineInfo *li = el_line(e);
li = el_line(el);
for (cp = el->el_line.buffer; cp < el->el_line.cursor; cp++) {
if (cp < el->el_line.lastchar && (w = wcwidth(*cp)) > 1)
c = el->el_line.cursor[-1];
if (c == '\t' || el->el_line.cursor != el->el_line.lastchar) {
el->el_line.buffer));
if (el->el_line.cursor >= el->el_line.lastchar) {
&& el->el_line.lastchar != el->el_line.buffer)
el->el_line.cursor = el->el_line.lastchar - 1;
el->el_line.cursor = el->el_line.lastchar;
if (el->el_line.lastchar - el->el_line.buffer > termsz) {
size_t rem = (el->el_line.lastchar-el->el_line.buffer)%termsz;
st = el->el_line.lastchar - rem
st = el->el_line.buffer;
for (cp = st; cp < el->el_line.lastchar; cp++) {
if (cp == el->el_line.cursor) {
if (el->el_line.cursor >= el->el_line.lastchar) {
&& el->el_line.lastchar != el->el_line.buffer)
el->el_line.cursor = el->el_line.lastchar - 1;
el->el_line.cursor = el->el_line.lastchar;
el->el_search.patlen = EL_CURSOR(el) - el->el_line.buffer;
(void) wcsncpy(el->el_search.patbuf, el->el_line.buffer,
EL_CURSOR(el) - el->el_line.buffer,
el->el_line.lastchar - el->el_line.buffer);
wchar_t *ocursor = el->el_line.cursor, oldpchar = pchar, ch;
if (el->el_line.lastchar + sizeof(STRfwd) /
sizeof(*el->el_line.lastchar) + 2 +
el->el_search.patlen >= el->el_line.limit)
*el->el_line.lastchar++ = '\n';
*cp; *el->el_line.lastchar++ = *cp++)
*el->el_line.lastchar++ = pchar;
*el->el_line.lastchar++ = *cp++)
*el->el_line.lastchar = '\0';
*el->el_line.lastchar++ = ch;
*el->el_line.lastchar = '\0';
el->el_line.cursor +=
cp = c__next_word(el->el_line.cursor,
el->el_line.lastchar, 1,
while (el->el_line.cursor < cp &&
*el->el_line.cursor != '\n') {
*el->el_line.cursor;
*el->el_line.lastchar++ =
*el->el_line.cursor++;
el->el_line.cursor = ocursor;
*el->el_line.lastchar = '\0';
while (el->el_line.lastchar > el->el_line.buffer &&
*el->el_line.lastchar != '\n')
*el->el_line.lastchar-- = '\0';
*el->el_line.lastchar = '\0';
el->el_line.cursor = newdir ==
el->el_line.lastchar :
el->el_line.buffer;
el->el_line.cursor +=
if (el->el_line.cursor < el->el_line.buffer ||
el->el_line.cursor > el->el_line.lastchar ||
el->el_line.cursor = newdir ==
el->el_line.lastchar :
el->el_line.buffer;
el->el_line.cursor = ocursor;
el->el_line.cursor = ocursor;
el->el_line.cursor = el->el_line.lastchar = el->el_line.buffer;
wchar_t *cp = el->el_line.cursor;
for (; cp >= el->el_line.buffer; cp--) {
el->el_line.cursor = cp;
for (; *cp != '\0' && cp < el->el_line.limit; cp++) {
el->el_line.cursor = cp;
((el)->el_line.cursor + (((el)->el_map.type == MAP_VI) && \
el->el_line.lastchar = el->el_line.buffer;
cp = el->el_line.cursor;
if (cp >= el->el_line.lastchar)
if (cp < el->el_line.buffer)
el->el_line.cursor = cp;
el->el_line.cursor++;
len = (size_t)(el->el_line.limit - el->el_line.buffer);
len = mbstowcs(el->el_line.buffer, cp, len);
if (len > 0 && el->el_line.buffer[len - 1] == '\n')
el->el_line.cursor = el->el_line.buffer;
el->el_line.lastchar = el->el_line.buffer + len;
if (!c && el->el_line.cursor < el->el_line.lastchar)
if (el->el_line.cursor < el->el_line.lastchar)
el->el_line.cursor++;
el->el_line.cursor++;
cp = el->el_line.cursor;
lim = el->el_line.limit;
el->el_line.cursor = cp;
el->el_chared.c_vcmd.pos = el->el_line.cursor;
if (el->el_line.cursor + len > el->el_line.lastchar)
(void) memcpy(el->el_line.cursor, k->buf, len *
sizeof(*el->el_line.cursor));
if (el->el_line.cursor == el->el_line.buffer)
el->el_line.cursor = cv_prev_word(el->el_line.cursor,
el->el_line.buffer,
if (el->el_line.cursor == el->el_line.buffer)
el->el_line.cursor = cv_prev_word(el->el_line.cursor,
el->el_line.buffer,
if (el->el_line.cursor >= el->el_line.lastchar - 1)
el->el_line.cursor = cv_next_word(el, el->el_line.cursor,
el->el_line.lastchar, el->el_state.argument, cv__isWord);
if (el->el_line.cursor >= el->el_line.lastchar - 1)
el->el_line.cursor = cv_next_word(el, el->el_line.cursor,
el->el_line.lastchar, el->el_state.argument, cv__isword);
if (el->el_line.cursor >= el->el_line.lastchar)
c = *el->el_line.cursor;
*el->el_line.cursor = towlower(c);
*el->el_line.cursor = towupper(c);
if (++el->el_line.cursor >= el->el_line.lastchar) {
el->el_line.cursor--;
el->el_line.cursor = el->el_line.buffer;
if (el->el_line.cursor >= el->el_line.lastchar)
cv_yank(el, el->el_line.buffer,
(int)(el->el_line.lastchar - el->el_line.buffer));
cv_yank(el, el->el_line.cursor,
(int)(el->el_line.lastchar - el->el_line.cursor));
if (el->el_line.cursor < el->el_line.lastchar) {
el->el_line.cursor++;
if (el->el_line.cursor > el->el_line.lastchar)
el->el_line.cursor = el->el_line.lastchar;
el->el_line.cursor = el->el_line.lastchar;
if (el->el_line.cursor == el->el_line.lastchar)
el->el_line.cursor = cv__endword(el->el_line.cursor,
el->el_line.lastchar, el->el_state.argument, cv__isWord);
el->el_line.cursor++;
if (el->el_line.cursor == el->el_line.lastchar)
el->el_line.cursor = cv__endword(el->el_line.cursor,
el->el_line.lastchar, el->el_state.argument, cv__isword);
el->el_line.cursor++;
el->el_chared.c_undo.buf = el->el_line.buffer;
el->el_chared.c_undo.len = el->el_line.lastchar - el->el_line.buffer;
(int)(el->el_line.cursor - el->el_line.buffer);
el->el_line.limit = un.buf + (el->el_line.limit - el->el_line.buffer);
el->el_line.buffer = un.buf;
el->el_line.cursor = un.buf + un.cursor;
el->el_line.lastchar = un.buf + un.len;
if (el->el_line.cursor > el->el_line.buffer)
el->el_line.cursor--;
el->el_line.cursor = el->el_line.buffer;
if (el->el_line.cursor <= el->el_line.buffer)
el->el_line.cursor--;
if (el->el_line.cursor == el->el_line.lastchar) {
if (el->el_line.cursor == el->el_line.buffer) {
*el->el_line.lastchar = '\0'; /* just in case */
cp = el->el_line.buffer;
while (cp < el->el_line.cursor)
c_delbefore(el, (int)(el->el_line.cursor - el->el_line.buffer));
el->el_line.cursor = el->el_line.buffer; /* zap! */
cv_yank(el, el->el_line.buffer,
(int)(el->el_line.lastchar - el->el_line.buffer));
el->el_line.lastchar = el->el_line.buffer;
el->el_line.cursor = el->el_line.buffer;
*el->el_line.lastchar = '\0'; /* just in case */
i = wcscspn(el->el_line.cursor, match_chars);
o_ch = el->el_line.cursor[i];
for (cp = &el->el_line.cursor[i]; count; ) {
if (cp < el->el_line.buffer || cp >= el->el_line.lastchar)
el->el_line.cursor = cp;
el->el_line.cursor++;
el->el_line.cursor = el->el_line.buffer;
el->el_chared.c_vcmd.pos = el->el_line.cursor;
cv_yank(el, el->el_line.cursor,
(int)(el->el_line.lastchar - el->el_line.cursor));
el->el_line.cursor = el->el_line.buffer;
*el->el_line.cursor = '#';
(void) wcsncpy(el->el_history.buf, el->el_line.buffer,
(el->el_line.lastchar - el->el_line.buffer);
len = (size_t)(el->el_line.lastchar - el->el_line.buffer);
wcsncpy(line, el->el_line.buffer, len);
*el->el_line.lastchar = '\0';
putwchar(el.el_line.buffer[i]);
assert(el.el_line.buffer[0] == '\0');
assert(el.el_line.lastchar == el.el_line.buffer);
assert(el.el_line.cursor == el.el_line.buffer);
lf = el_line(el);
lf = el_line(el);
lf = el_line(el);
lf = el_line(el);