From 9e4afcbbc2a5aa949bd94a65f0bf931513005386 Mon Sep 17 00:00:00 2001 From: sabetts Date: Tue, 5 Oct 2004 05:03:54 +0000 Subject: new command, sselect (cmd_sselect): new function. added prototype. --- src/actions.c | 35 +++++++++++++++++++++++++++++++++++ src/actions.h | 1 + 2 files changed, 36 insertions(+) (limited to 'src') diff --git a/src/actions.c b/src/actions.c index 5321ed3..821efa9 100644 --- a/src/actions.c +++ b/src/actions.c @@ -100,6 +100,7 @@ static user_command user_commands[] = {"shrink", cmd_shrink, arg_VOID}, {"source", cmd_source, arg_STRING}, {"split", cmd_v_split, arg_STRING}, + {"sselect", cmd_sselect, arg_STRING}, {"startup_message", cmd_startup_message, arg_STRING}, {"time", cmd_time, arg_VOID}, {"title", cmd_rename, arg_STRING}, @@ -3030,6 +3031,40 @@ cmd_prevscreen (int interactive, char *data) return NULL; } +char * +cmd_sselect(int interactive, char *data) +{ + char *str; + char *tmp; + int new_screen; + if (data == NULL) + str = get_input ("Select Screen: ", trivial_completions); + else + str = xstrdup (data); + + if (str == NULL) + return NULL; + + tmp = strtok (str, " "); + if (tmp) + { + new_screen = string_to_window_number (tmp); + if (new_screen < 0) + { + message (" sselect: invalid argument "); + free (str); + return NULL; + } + if (new_screen < num_screens) + set_active_frame (screen_get_frame (&screens[new_screen], screens[new_screen].current_frame)); + else + message (" sselect: out of range "); + } + + free (str); + return NULL; +} + char * cmd_warp (int interactive, char *data) { diff --git a/src/actions.h b/src/actions.h index f027df1..62e5df5 100644 --- a/src/actions.h +++ b/src/actions.h @@ -124,6 +124,7 @@ char *cmd_newkmap (int interactive, char *data); char *cmd_delkmap (int interactive, char *data); char *cmd_definekey (int interactive, char *data); char *cmd_set (int interactive, char *data); +char *cmd_sselect(int interactive, char *data); rp_keymap *find_keymap (char *name); void initialize_default_keybindings (void); -- cgit v1.2.3