Index: src/edit.c =================================================================== RCS file: /mnt/scsi/cvsroot/bbs100/src/edit.c,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -u -r1.1.1.1.2.1 -r1.1.1.1.2.2 --- src/edit.c 22 Mar 2002 20:52:17 -0000 1.1.1.1.2.1 +++ src/edit.c 6 Apr 2002 08:43:03 -0000 1.1.1.1.2.2 @@ -828,6 +828,11 @@ } break; + /* Eat words in X line, to be more like DOC. */ + case KEY_CTRL('W'): + erase_word(usr); + break; + default: if (!isprint(c)) break; @@ -879,6 +884,7 @@ listdestroy_StringList(usr->more_text); usr->more_text = NULL; + Print(usr, "%c",color_table[usr->colors[TEXT]].key); return 0; } if (usr->total_lines >= PARAM_MAX_MSG_LINES) { @@ -940,6 +946,11 @@ } break; + /* Eat words in post line, to be more like DOC. */ + case KEY_CTRL('W'): + erase_word(usr); + break; + default: if (!isprint(c)) break; @@ -1094,6 +1105,47 @@ usr->runtime_flags &= ~RTF_COLOR_EDITING; } +void erase_word(User *usr) { + if (usr->edit_pos <= 0) { + return; + } else { + int where; + char lastcolor = 0; + + /* Eat until there's a character left of us */ + for (where=usr->edit_pos; where > 0; where--) { + if (!isspace(usr->edit_buf[(where-1)])) + break; + usr->edit_pos--; + if (isprint(usr->edit_buf[usr->edit_pos])) + Put(usr, "\b \b"); + usr->edit_buf[usr->edit_pos] = 0; + } + + /* Then eat until we're in the space to the right of a char */ + for (where=usr->edit_pos; where > 0; where--) { + if (isspace(usr->edit_buf[(where-1)])) + break; + usr->edit_pos--; + if (isprint(usr->edit_buf[usr->edit_pos])) + Put(usr, "\b \b"); + usr->edit_buf[usr->edit_pos] = 0; + } + + /* Restore our last color code */ + for (where=usr->edit_pos; where > 0; where--) { + if (iscntrl(usr->edit_buf[(where-1)])) { + lastcolor = usr->edit_buf[(where-1)]; + break; + } + } + + if (lastcolor) + Print(usr, "%c", lastcolor); + else + Print(usr, "%c", color_table[usr->colors[TEXT]].key); + } +} /* erase a color-code marked line Index: src/state.c =================================================================== RCS file: /mnt/scsi/cvsroot/bbs100/src/state.c,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.3 diff -u -r1.1.1.1.2.1 -r1.1.1.1.2.3 --- src/state.c 22 Mar 2002 20:52:17 -0000 1.1.1.1.2.1 +++ src/state.c 6 Apr 2002 08:43:03 -0000 1.1.1.1.2.3 @@ -57,6 +57,7 @@ #include #include #include +#include #define STRING_CHANCE ((rand() % 20) < 4) @@ -1532,6 +1533,7 @@ edit_x(usr, EDIT_INIT); usr->runtime_flags |= RTF_BUSY_SENDING; Put(usr, "\031>"); + Print(usr, "%c", color_table[usr->colors[TEXT]].key); Return; } if (c == KEY_CTRL('A') && (usr->flags & USR_FOLLOWUP)) { Index: src/util.c =================================================================== RCS file: /mnt/scsi/cvsroot/bbs100/src/util.c,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.3 diff -u -r1.1.1.1.2.1 -r1.1.1.1.2.3 --- src/util.c 22 Mar 2002 20:52:17 -0000 1.1.1.1.2.1 +++ src/util.c 28 Mar 2002 03:26:23 -0000 1.1.1.1.2.3 @@ -40,6 +40,7 @@ #include #include #include +#include #define HACK_CHANCE ((rand() % 20) < 4) @@ -245,6 +246,7 @@ usr->colors[CYAN] = CYAN; usr->colors[WHITE] = WHITE; usr->colors[HOTKEY] = YELLOW; + usr->colors[TEXT] = GREEN; } int color_strlen(char *str) {