let create_add_binding_commands
(option:(Okey.keyhit_state * string) Config_file.list_cp)
name =
let f_add = fun key_state command ->
let l = (key_state, command) :: option#get in
option#set l
in
let f_add_string = fun key_state_string ->
let key_state = Ed_config.key_state_wrappers.Config_file.of_raw
(Config_file.Raw.of_string key_state_string)
in
f_add key_state
in
let com_name = Printf.sprintf "add_%s_key_binding" name in
let f_com args =
let len = Array.length args in
if len < 2 then
failwith (Printf.sprintf "Usage: %s <list of keys> <command>" com_name);
f_add_string args.(0) args.(1)
in
let com =
{ Cam_commands.com_name = com_name;
com_args = [| "list of keys" ; "command" |] ;
com_more_args = None ;
com_f = f_com ;
}
in
Cam_commands.register com;
(f_add, f_add_string)