version 1.26, 2009/02/06 12:45:25 |
version 1.27, 2009/02/15 21:55:23 |
Line 60 cv_undo(EditLine *el) |
|
Line 60 cv_undo(EditLine *el) |
|
{ |
{ |
c_undo_t *vu = &el->el_chared.c_undo; |
c_undo_t *vu = &el->el_chared.c_undo; |
c_redo_t *r = &el->el_chared.c_redo; |
c_redo_t *r = &el->el_chared.c_redo; |
unsigned int size; |
size_t size; |
|
|
/* Save entire line for undo */ |
/* Save entire line for undo */ |
size = el->el_line.lastchar - el->el_line.buffer; |
size = el->el_line.lastchar - el->el_line.buffer; |
vu->len = size; |
vu->len = size; |
vu->cursor = el->el_line.cursor - el->el_line.buffer; |
vu->cursor = (int)(el->el_line.cursor - el->el_line.buffer); |
memcpy(vu->buf, el->el_line.buffer, size); |
memcpy(vu->buf, el->el_line.buffer, size); |
|
|
/* save command info for redo */ |
/* save command info for redo */ |
Line 84 cv_yank(EditLine *el, const char *ptr, i |
|
Line 84 cv_yank(EditLine *el, const char *ptr, i |
|
{ |
{ |
c_kill_t *k = &el->el_chared.c_kill; |
c_kill_t *k = &el->el_chared.c_kill; |
|
|
memcpy(k->buf, ptr, size +0u); |
memcpy(k->buf, ptr, (size_t)size); |
k->last = k->buf + size; |
k->last = k->buf + size; |
} |
} |
|
|
Line 98 c_insert(EditLine *el, int num) |
|
Line 98 c_insert(EditLine *el, int num) |
|
char *cp; |
char *cp; |
|
|
if (el->el_line.lastchar + num >= el->el_line.limit) { |
if (el->el_line.lastchar + num >= el->el_line.limit) { |
if (!ch_enlargebufs(el, num +0u)) |
if (!ch_enlargebufs(el, (size_t)num)) |
return; /* can't go past end of buffer */ |
return; /* can't go past end of buffer */ |
} |
} |
|
|
Line 119 c_delafter(EditLine *el, int num) |
|
Line 119 c_delafter(EditLine *el, int num) |
|
{ |
{ |
|
|
if (el->el_line.cursor + num > el->el_line.lastchar) |
if (el->el_line.cursor + num > el->el_line.lastchar) |
num = el->el_line.lastchar - el->el_line.cursor; |
num = (int)(el->el_line.lastchar - el->el_line.cursor); |
|
|
if (el->el_map.current != el->el_map.emacs) { |
if (el->el_map.current != el->el_map.emacs) { |
cv_undo(el); |
cv_undo(el); |
Line 160 c_delbefore(EditLine *el, int num) |
|
Line 160 c_delbefore(EditLine *el, int num) |
|
{ |
{ |
|
|
if (el->el_line.cursor - num < el->el_line.buffer) |
if (el->el_line.cursor - num < el->el_line.buffer) |
num = el->el_line.cursor - el->el_line.buffer; |
num = (int)(el->el_line.cursor - el->el_line.buffer); |
|
|
if (el->el_map.current != el->el_map.emacs) { |
if (el->el_map.current != el->el_map.emacs) { |
cv_undo(el); |
cv_undo(el); |
Line 376 cv_delfini(EditLine *el) |
|
Line 376 cv_delfini(EditLine *el) |
|
/* sanity */ |
/* sanity */ |
return; |
return; |
|
|
size = el->el_line.cursor - el->el_chared.c_vcmd.pos; |
size = (int)(el->el_line.cursor - el->el_chared.c_vcmd.pos); |
if (size == 0) |
if (size == 0) |
size = 1; |
size = 1; |
el->el_line.cursor = el->el_chared.c_vcmd.pos; |
el->el_line.cursor = el->el_chared.c_vcmd.pos; |
Line 530 ch_reset(EditLine *el, int mclear) |
|
Line 530 ch_reset(EditLine *el, int mclear) |
|
} |
} |
|
|
private void |
private void |
ch__clearmacro(el) |
ch__clearmacro(EditLine *el) |
EditLine *el; |
|
{ |
{ |
c_macro_t *ma = &el->el_chared.c_macro; |
c_macro_t *ma = &el->el_chared.c_macro; |
while (ma->level >= 0) |
while (ma->level >= 0) |
Line 543 ch__clearmacro(el) |
|
Line 542 ch__clearmacro(el) |
|
* Returns 1 if successful, 0 if not. |
* Returns 1 if successful, 0 if not. |
*/ |
*/ |
protected int |
protected int |
ch_enlargebufs(el, addlen) |
ch_enlargebufs(EditLine *el, size_t addlen) |
EditLine *el; |
|
size_t addlen; |
|
{ |
{ |
size_t sz, newsz; |
size_t sz, newsz; |
char *newbuffer, *oldbuf, *oldkbuf; |
char *newbuffer, *oldbuf, *oldkbuf; |
|
|
c_gets(EditLine *el, char *buf, const char *prompt) |
c_gets(EditLine *el, char *buf, const char *prompt) |
{ |
{ |
char ch; |
char ch; |
int len; |
ssize_t len; |
char *cp = el->el_line.buffer; |
char *cp = el->el_line.buffer; |
|
|
if (prompt) { |
if (prompt) { |
len = strlen(prompt); |
len = strlen(prompt); |
memcpy(cp, prompt, len + 0u); |
memcpy(cp, prompt, (size_t)len); |
cp += len; |
cp += len; |
} |
} |
len = 0; |
len = 0; |
Line 722 c_gets(EditLine *el, char *buf, const ch |
|
Line 719 c_gets(EditLine *el, char *buf, const ch |
|
|
|
case 0010: /* Delete and backspace */ |
case 0010: /* Delete and backspace */ |
case 0177: |
case 0177: |
if (len <= 0) { |
if (len == 0) { |
len = -1; |
len = -1; |
break; |
break; |
} |
} |
Line 750 c_gets(EditLine *el, char *buf, const ch |
|
Line 747 c_gets(EditLine *el, char *buf, const ch |
|
el->el_line.buffer[0] = '\0'; |
el->el_line.buffer[0] = '\0'; |
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.cursor = el->el_line.buffer; |
return len; |
return (int)len; |
} |
} |
|
|
|
|
Line 772 c_hpos(EditLine *el) |
|
Line 769 c_hpos(EditLine *el) |
|
ptr >= el->el_line.buffer && *ptr != '\n'; |
ptr >= el->el_line.buffer && *ptr != '\n'; |
ptr--) |
ptr--) |
continue; |
continue; |
return (el->el_line.cursor - ptr - 1); |
return (int)(el->el_line.cursor - ptr - 1); |
} |
} |
} |
} |