diff options
| -rw-r--r-- | TODO | 5 | ||||
| -rw-r--r-- | doc/ideas.txt | 5 | ||||
| -rw-r--r-- | doc/ui_keys.txt | 2 | ||||
| -rw-r--r-- | src/cmd.c | 9 | ||||
| -rw-r--r-- | src/irc.c | 12 | ||||
| -rw-r--r-- | src/screen.c | 5 |
6 files changed, 25 insertions, 13 deletions
@@ -4,6 +4,11 @@ FujiChat features, we're almost at parity! - Nick tab completion. FujiChat's was very lame, make this one less lame. It can't be perfect due to limited RAM. +- Configurable ctcp version response. +- Keyboard buffer, if possible. Right now we miss the occasional + keystroke when typing fast & furious during network I/O. Not + sure how to accomplish this with FujiNet (the old FujiChat + key buffer actually hooked into the SLIP code). Other stuff: diff --git a/doc/ideas.txt b/doc/ideas.txt index 55b5901..f70e47f 100644 --- a/doc/ideas.txt +++ b/doc/ideas.txt @@ -22,11 +22,6 @@ Features that should be implemented: we won't be using WSYNC, it opens up the possibility of using DLIs (if I can think of a useful use for them). -- Keyboard buffer, if possible. Right now we miss the occasional - keystroke when typing fast & furious during network I/O. Not - sure how to accomplish this with FujiNet (the old FujiChat - key buffer actually hooked into the SLIP code). - - Adaptive scrollback (dynamic screen size). Using fewer screens would mean you get more scroll. Shorter screens steal lines from the top of the tallest screen as needed. Requires a display list diff --git a/doc/ui_keys.txt b/doc/ui_keys.txt index c89df33..dd9b9e8 100644 --- a/doc/ui_keys.txt +++ b/doc/ui_keys.txt @@ -16,9 +16,11 @@ N - in channel screen, do a /names #channel. in [server], last channel with traffic. no effect elsewhere. P - in a query screen, do a /ping <nick>. in [private], last nick who PMed. no effect elsewhere. +T - /topic #channel Future plans: +E - show full editbox (instead of screen). J - join last channel you were invited to. Ctrl-X - in a channel screen, /part the channel and close the screen. no effect elsewhere. @@ -167,8 +167,7 @@ static void do_j(void) { } if(have_commas()) return; - if(!scr_getbyname(arg1)) - scr_create(arg1, 1); + scr_create(arg1, 1); do_j1(); } @@ -355,18 +354,16 @@ static void do_color(void) { } static void do_query(void) { - /* don't create a query if we already got one! */ - if(scr_getbyname(arg1)) - return; - if(scr_create(arg1, 1) == 0xff) { err_marker(); scr_print_current("Can't create query, all screens in use\n"); return; } + /* scr_print_current("Starting conversation with "); scr_print_current(arg1); scr_eol_current(); + */ } static void do_msg(void) { @@ -292,7 +292,7 @@ static void do_topic(void) { static void do_kick(void) { scr_print_active(msg_src); scr_print_active(" has kicked "); - scr_print_active(msg_args[2]); + scr_print_active(msg_args[1]); scr_print_active(" from "); scr_print_active(msg_dest); print_reason(); @@ -768,6 +768,13 @@ void ui_whois_or_ping(char is_ping) { } } +void ui_topic(void) { + if(!cur_is_chan()) + return; + txbuf_set_str2("TOPIC ", scr_names[scr_current]); + txbuf_send(); +} + void ui_part(void) { if(!cur_is_chan()) return; @@ -863,6 +870,9 @@ static void start_keystroke(void) { case 'p': ui_whois_or_ping(1); return; + case 't': + ui_topic(); + break; case 's': edbox_hide(); /* fall thru */ diff --git a/src/screen.c b/src/screen.c index cae2585..5852208 100644 --- a/src/screen.c +++ b/src/screen.c @@ -61,10 +61,13 @@ void scr_init(void) { scr_display(0); } -/* TODO: don't create screen if it already exists! */ char scr_create(const char *name, char display) { int i; + /* don't create a duplicate screen */ + if( (i = scr_getbyname(name)) ) + return i; + for(i = 0; i < MAX_SCREENS; i++) { if(scr_status[i] == SCR_UNUSED) { strcpy(scr_names[i], name); |
