diff options
author | rcyeske <rcyeske> | 2000-10-31 04:35:51 +0000 |
---|---|---|
committer | rcyeske <rcyeske> | 2000-10-31 04:35:51 +0000 |
commit | 4919815a954b76addb8527ea398475462d929770 (patch) | |
tree | ec3aa52a367cd8a3e32a839c283e2c1ca7adcd49 /src | |
parent | 7894d7c0f48880154f0be554b1945dd64999a5a0 (diff) | |
download | ratpoison-4919815a954b76addb8527ea398475462d929770.zip |
* actions.c (rename_current_window): added test to skip renaming if user entered an empty string
(execute_command): added command
(key_actions): execute_command is called by pressing ':'
Diffstat (limited to 'src')
-rw-r--r-- | src/actions.c | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/actions.c b/src/actions.c index 6bdcfe3..e9e0867 100644 --- a/src/actions.c +++ b/src/actions.c @@ -11,6 +11,7 @@ rp_action key_actions[] = { {'c', -1, "xterm", spawn}, {'e', -1, "emacs", spawn}, {'p', -1, 0, prev_window}, {'n', -1, 0, next_window}, + {';', ShiftMask, 0, execute_command}, {KEY_PREFIX, -1, 0, last_window}, {'w', -1, 0, toggle_bar}, {'k', ShiftMask, 0, kill_window}, @@ -91,18 +92,21 @@ rename_current_window (void *data) get_input (rp_current_window->scr, "Name: ", winname, 100); PRINT_DEBUG ("user entered: %s\n", winname); - free (rp_current_window->name); - rp_current_window->name = malloc (sizeof (char) * strlen (winname) + 1); - if (rp_current_window->name == NULL) + if (*winname) { - PRINT_ERROR ("Out of memory\n"); - exit (EXIT_FAILURE); - } - strcpy (rp_current_window->name, winname); - rp_current_window->named = 1; + free (rp_current_window->name); + rp_current_window->name = malloc (sizeof (char) * strlen (winname) + 1); + if (rp_current_window->name == NULL) + { + PRINT_ERROR ("Out of memory\n"); + exit (EXIT_FAILURE); + } + strcpy (rp_current_window->name, winname); + rp_current_window->named = 1; - /* Update the program bar. */ - update_window_names (rp_current_window->scr); + /* Update the program bar. */ + update_window_names (rp_current_window->scr); + } } @@ -134,6 +138,17 @@ kill_window (void *data) } void +execute_command (void *data) +{ + char cmd[100]; + + get_input (rp_current_window->scr, "Command: ", cmd, 100); + PRINT_DEBUG ("user entered: %s\n", cmd); + + spawn (cmd); +} + +void spawn(void *data) { char *prog = data; |