diff options
author | sabetts <sabetts> | 2005-01-15 04:06:57 +0000 |
---|---|---|
committer | sabetts <sabetts> | 2005-01-15 04:06:57 +0000 |
commit | 4ccc6cdf0f85b397edab7e4aec9dd412ceefc99b (patch) | |
tree | 22cc0dc116dca71b18e28dc78c02b84818c1bb39 /src/actions.h | |
parent | eb4f8c1e431d34bfa27a736af0b5d59dde09b200 (diff) | |
download | ratpoison-4ccc6cdf0f85b397edab7e4aec9dd412ceefc99b.zip |
* src/actions.c (ARG_STRING): new define
(ARG): likewise
(set_vars): change to a list_head.
(add_set_var): new function
(init_set_vars): likewise
(user_commands): change to a list_head. Move command definitions
to init_user_commands.
(add_command): new function
(init_user_commands): likewise
(cmdret_new): likewise
(cmdret_new_printf): likewise
(cmdret_free): likewise
(read_string): likewise
(read_keymap): likewise
(read_keydesc): likewise
(read_command): likewise
(read_shellcmd): likewise
(read_frame): likewise
(read_window): likewise
(read_gravity): likewise
(read_group): likewise
(read_hook): likewise
(read_variable): likewise
(hook_completions): likewise
(read_number): likewise
(read_arg): likewise
(parsed_input_to_args): likewise
(fill_in_missing_args): likewise
(parse_args): likewise
(arg_array): likewise
(arg_free): likewise
(command): use parse_args, parsed_input_to_args,
fill_in_missing_args to parse arguments and pass to command
functions.
(command): return cmdret* structure. prototype updated.
(cmd_abort): second arg is an array of struct cmdarg*. Return
cmdret*. Updated to use new parsed arguments.
(cmd_addhook): likewise
(cmd_alias): likewise
(cmd_banish): likewise
(cmd_bind): likewise
(cmd_chdir): likewise
(cmd_clrunmanaged): likewise
(cmd_colon): likewise
(cmd_curframe): likewise
(cmd_delete): likewise
(cmd_echo): likewise
(cmd_escape): likewise
(cmd_exec): likewise
(cmd_fdump): likewise
(cmd_focusdown): likewise
(cmd_focuslast): likewise
(cmd_focusleft): likewise
(cmd_focusright): likewise
(cmd_focusup): likewise
(cmd_frestore): likewise
(cmd_fselect): likewise
(cmd_gdelete): likewise
(cmd_getenv): likewise
(cmd_gmerge): likewise
(cmd_gmove): likewise
(cmd_gnew): likewise
(cmd_gnewbg): likewise
(cmd_gnext): likewise
(cmd_gprev): likewise
(cmd_gravity): likewise
(cmd_groups): likewise
(cmd_gselect): likewise
(cmd_h_split): likewise
(cmd_help): likewise
(cmd_info): likewise
(cmd_kill): likewise
(cmd_last): likewise
(cmd_lastmsg): likewise
(cmd_license): likewise
(cmd_link): likewise
(cmd_listhook): likewise
(cmd_meta): likewise
(cmd_msgwait): likewise
(cmd_newwm): likewise
(cmd_next): likewise
(cmd_next_frame): likewise
(cmd_nextscreen): likewise
(cmd_number): likewise
(cmd_only): likewise
(cmd_other): likewise
(cmd_prev): likewise
(cmd_prev_frame): likewise
(cmd_prevscreen): likewise
(cmd_quit): likewise
(cmd_redisplay): likewise
(cmd_remhook): likewise
(cmd_remove): likewise
(cmd_rename): likewise
(cmd_resize): likewise
(cmd_restart): likewise
(cmd_rudeness): likewise
(cmd_select): likewise
(cmd_setenv): likewise
(cmd_shrink): likewise
(cmd_source): likewise
(cmd_startup_message): likewise
(cmd_time): likewise
(cmd_tmpwm): likewise
(cmd_unalias): likewise
(cmd_unbind): likewise
(cmd_unimplemented): likewise
(cmd_unmanage): likewise
(cmd_unsetenv): likewise
(cmd_v_split): likewise
(cmd_verbexec): likewise
(cmd_version): likewise
(cmd_warp): likewise
(cmd_windows): likewise
(cmd_readkey): likewise
(cmd_newkmap): likewise
(cmd_delkmap): likewise
(cmd_definekey): likewise
(cmd_undefinekey): likewise
(cmd_set): likewise
(cmd_sselect): likewise
(cmd_ratwarp): likewise
(cmd_ratclick): likewise
(cmd_ratrelwarp): likewise
(cmd_rathold): likewise
(cmd_cnext): likewise
(cmd_cother): likewise
(cmd_cprev): likewise
(cmd_dedicate): likewise
(cmd_describekey): likewise
(cmd_inext): likewise
(cmd_iother): likewise
(cmd_iprev): likewise
(cmd_prompt): likewise
(cmd_sdump): likewise
(cmd_sfdump): likewise
(cmd_undo): likewise
(cmd_putsel): likewise
(cmd_getsel): likewise
(set_resizeunit): arg is an array of struct cmdarg*. Return
cmdret*. Updated to use new parsed arguments.
(set_wingravity): likewise
(set_transgravity): likewise
(set_maxsizegravity): likewise
(set_bargravity): likewise
(set_font): likewise
(set_padding): likewise
(set_border): likewise
(set_barborder): likewise
(set_inputwidth): likewise
(set_waitcursor): likewise
(set_winfmt): likewise
(set_winname): likewise
(set_fgcolor): likewise
(set_bgcolor): likewise
(set_barpadding): likewise
(set_winliststyle): likewise
(set_framesels): likewise
(set_maxundos): likewise
* src/actions.h: include ratpoison.h
(argtype): add arg_FRAME, arg_WINDOW, arg_COMMAND, arg_SHELLCMD,
arg_KEYMAP, arg_KEY, arg_GRAVITY, arg_GROUP, arg_HOOK,
arg_VARIABLE.
(union arg_union): new union
(struct cmdarg): new struct
(struct argspec): likewise
(struct cmdret): likewise
(user_command): change func to reflect new command function
args. add num_args, ni_required_args, i_required_args.
(RP_CMD): new macro for prototyping command functions. all command
function prototypes updated to use this macro.
(init_user_commands): new prototype
(cmdret_free): likewise
* src/main.c (read_rc_file): handle cmdret* returned by command.
(main): call init_user_commands
* src/linkedlist.h (list_size): new prototype
* src/linkedlist.c (list_size): new function
* src/globals.h (RET_SUCCESS): new define
(RET_FAILURE): new define
* src/events.c (handle_key): handle the cmdret structure returned
by command.
(execute_remote_command): return cmdret*.
(receive_command): mark the command return string as error or
output before sending.
* src/data.h (struct rp_action): change data element type to char*
* src/communications.c (receive_command_result): print command
output to stderr if marked as an error.
Diffstat (limited to 'src/actions.h')
-rw-r--r-- | src/actions.h | 270 |
1 files changed, 161 insertions, 109 deletions
diff --git a/src/actions.h b/src/actions.h index 73ce89b..9b4ec6d 100644 --- a/src/actions.h +++ b/src/actions.h @@ -25,129 +25,181 @@ #define MAX_COMMAND_LENGTH 100 #define MAX_ARGS_LENGTH 100 +#include <ratpoison.h> + typedef struct user_command user_command; -enum argtype { arg_VOID, arg_STRING, arg_NUMBER }; +enum argtype { arg_REST, arg_NUMBER, arg_STRING, arg_FRAME, + arg_WINDOW, arg_COMMAND, arg_SHELLCMD, + arg_KEYMAP, arg_KEY, arg_GRAVITY, arg_GROUP, + arg_HOOK, arg_VARIABLE }; + +union arg_union { + rp_frame *frame; + int number; + float fnumber; + rp_window *win; + rp_keymap *keymap; + rp_group *group; + struct list_head *hook; + struct set_var *variable; + struct rp_key *key; + int gravity; + }; + +struct cmdarg +{ + int type; + char *string; + union arg_union arg; + struct list_head node; +}; + +struct argspec +{ + int type; + char *prompt; +}; + +/* The structure returned by a command. */ +typedef struct cmdret cmdret; +struct cmdret +{ + char *output; + int success; +}; struct user_command { char *name; - char * (*func)(int, char *); - int argtype; + cmdret * (*func)(int, struct cmdarg **); + struct argspec *args; + int num_args; + /* The number of required arguments. Any arguments after that are + optional and won't be filled in when called + interactively. ni_required_args is used when called non-interactively, + i_required_args when called interactively. */ + int ni_required_args, i_required_args; + + struct list_head node; }; int spawn(char *data); -char * command (int interactive, char *data); - -char *cmd_abort (int interactive, char *data); -char *cmd_addhook (int interactive, char *data); -char *cmd_alias (int interactive, char *data); -char *cmd_banish (int interactive, char *data); -char *cmd_bind (int interactive, char *data); -char *cmd_chdir (int interactive, char *data); -char *cmd_clrunmanaged (int interactive, char *data); -char *cmd_colon (int interactive, char *data); -char *cmd_curframe (int interactive, char *data); -char *cmd_delete (int interactive, char *data); -char *cmd_echo (int interactive, char *data); -char *cmd_escape (int interactive, char *data); -char *cmd_exec (int interactive, char *data); -char *cmd_fdump (int interactively, char *data); -char *cmd_focusdown (int interactive, char *data); -char *cmd_focuslast (int interactive, char *data); -char *cmd_focusleft (int interactive, char *data); -char *cmd_focusright (int interactive, char *data); -char *cmd_focusup (int interactive, char *data); -char *cmd_frestore (int interactively, char *data); -char *cmd_fselect (int interactive, char *data); -char *cmd_gdelete (int interactive, char *data); -char *cmd_getenv (int interactive, char *data); -char *cmd_gmerge (int interactive, char *data); -char *cmd_gmove (int interactive, char *data); -char *cmd_gnew (int interactive, char *data); -char *cmd_gnewbg (int interactive, char *data); -char *cmd_gnext (int interactive, char *data); -char *cmd_gprev (int interactive, char *data); -char *cmd_gravity (int interactive, char *data); -char *cmd_groups (int interactive, char *data); -char *cmd_gselect (int interactive, char *data); -char *cmd_h_split (int interactive, char *data); -char *cmd_help (int interactive, char *data); -char *cmd_info (int interactive, char *data); -char *cmd_kill (int interactive, char *data); -char *cmd_last (int interactive, char *data); -char *cmd_lastmsg (int interactive, char *data); -char *cmd_license (int interactive, char *data); -char *cmd_link (int interactive, char *data); -char *cmd_listhook (int interactive, char *data); -char *cmd_meta (int interactive, char *data); -char *cmd_msgwait (int interactive, char *data); -char *cmd_newwm(int interactive, char *which); -char *cmd_next (int interactive, char *data); -char *cmd_next_frame (int interactive, char *data); -char *cmd_nextscreen (int interactive, char *data); -char *cmd_number (int interactive, char *data); -char *cmd_only (int interactive, char *data); -char *cmd_other (int interactive, char *data); -char *cmd_prev (int interactive, char *data); -char *cmd_prev_frame (int interactive, char *data); -char *cmd_prevscreen (int interactive, char *data); -char *cmd_quit(int interactive, char *data); -char *cmd_redisplay (int interactive, char *data); -char *cmd_remhook (int interactive, char *data); -char *cmd_remove (int interactive, char *data); -char *cmd_rename (int interactive, char *data); -char *cmd_resize (int interactive, char *data); -char *cmd_restart (int interactive, char *data); -char *cmd_rudeness (int interactive, char *data); -char *cmd_select (int interactive, char *data); -char *cmd_setenv (int interactive, char *data); -char *cmd_shrink (int interactive, char *data); -char *cmd_source (int interactive, char *data); -char *cmd_startup_message (int interactive, char *data); -char *cmd_time (int interactive, char *data); -char *cmd_tmpwm (int interactive, char *data); -char *cmd_togglewrapwinlist (); -char *cmd_unalias (int interactive, char *data); -char *cmd_unbind (int interactive, char *data); -char *cmd_unimplemented (int interactive, char *data); -char *cmd_unmanage (int interactive, char *data); -char *cmd_unsetenv (int interactive, char *data); -char *cmd_v_split (int interactive, char *data); -char *cmd_verbexec (int interactive, char *data); -char *cmd_version (int interactive, char *data); -char *cmd_warp(int interactive, char *data); -char *cmd_windows (int interactive, char *data); -char *cmd_readkey (int interactive, char *data); -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); -char *cmd_ratwarp (int interactive, char *data); -char *cmd_ratclick (int interactive, char *data); -char *cmd_ratrelwarp (int interactive, char *data); -char *cmd_rathold (int interactive, char *data); -char *cmd_cnext (int interactive, char *data); -char *cmd_cother (int interactive, char *data); -char *cmd_cprev (int interactive, char *data); -char *cmd_dedicate (int interactive, char *data); -char *cmd_describekey (int interactive, char *data); -char *cmd_inext (int interactive, char *data); -char *cmd_iother (int interactive, char *data); -char *cmd_iprev (int interactive, char *data); -char *cmd_prompt (int interactive, char *data); -char *cmd_sdump (int interactive, char *data); -char *cmd_sfdump (int interactively, char *data); -char *cmd_undo (int interactive, char *data); -char *cmd_putsel (int interactive, char *data); -char *cmd_getsel (int interactive, char *data); -char *cmd_appendsel (int interactive, char *data); +cmdret *command (int interactive, char *data); + +/* command function prototypes. */ +#define RP_CMD(cmd) cmdret *cmd_ ## cmd (int interactive, struct cmdarg **args) +RP_CMD (abort); +RP_CMD (addhook); +RP_CMD (alias); +RP_CMD (banish); +RP_CMD (bind); +RP_CMD (chdir); +RP_CMD (clrunmanaged); +RP_CMD (colon); +RP_CMD (curframe); +RP_CMD (delete); +RP_CMD (echo); +RP_CMD (escape); +RP_CMD (exec); +RP_CMD (fdump); +RP_CMD (focusdown); +RP_CMD (focuslast); +RP_CMD (focusleft); +RP_CMD (focusright); +RP_CMD (focusup); +RP_CMD (frestore); +RP_CMD (fselect); +RP_CMD (gdelete); +RP_CMD (getenv); +RP_CMD (gmerge); +RP_CMD (gmove); +RP_CMD (gnew); +RP_CMD (gnewbg); +RP_CMD (gnext); +RP_CMD (gprev); +RP_CMD (gravity); +RP_CMD (groups); +RP_CMD (gselect); +RP_CMD (h_split); +RP_CMD (help); +RP_CMD (info); +RP_CMD (kill); +RP_CMD (last); +RP_CMD (lastmsg); +RP_CMD (license); +RP_CMD (link); +RP_CMD (listhook); +RP_CMD (meta); +RP_CMD (msgwait); +RP_CMD (newwm); +RP_CMD (next); +RP_CMD (next_frame); +RP_CMD (nextscreen); +RP_CMD (number); +RP_CMD (only); +RP_CMD (other); +RP_CMD (prev); +RP_CMD (prev_frame); +RP_CMD (prevscreen); +RP_CMD (quit); +RP_CMD (redisplay); +RP_CMD (remhook); +RP_CMD (remove); +RP_CMD (rename); +RP_CMD (resize); +RP_CMD (restart); +RP_CMD (rudeness); +RP_CMD (select); +RP_CMD (setenv); +RP_CMD (shrink); +RP_CMD (source); +RP_CMD (startup_message); +RP_CMD (time); +RP_CMD (tmpwm); +RP_CMD (unalias); +RP_CMD (unbind); +RP_CMD (unimplemented); +RP_CMD (unmanage); +RP_CMD (unsetenv); +RP_CMD (v_split); +RP_CMD (verbexec); +RP_CMD (version); +RP_CMD (warp); +RP_CMD (windows); +RP_CMD (readkey); +RP_CMD (newkmap); +RP_CMD (delkmap); +RP_CMD (definekey); +RP_CMD (undefinekey); +RP_CMD (set); +RP_CMD (sselect); +RP_CMD (ratwarp); +RP_CMD (ratclick); +RP_CMD (ratrelwarp); +RP_CMD (rathold); +RP_CMD (cnext); +RP_CMD (cother); +RP_CMD (cprev); +RP_CMD (dedicate); +RP_CMD (describekey); +RP_CMD (inext); +RP_CMD (iother); +RP_CMD (iprev); +RP_CMD (prompt); +RP_CMD (sdump); +RP_CMD (sfdump); +RP_CMD (undo); +RP_CMD (putsel); +RP_CMD (getsel); + void pop_frame_undo (rp_frame_undo *u); rp_keymap *find_keymap (char *name); +void init_user_commands(); void initialize_default_keybindings (void); +void cmdret_free (cmdret *ret); void keymap_free (rp_keymap *map); void free_aliases (); void free_keymaps (); |