[BACK]Return to cmd-bind-key.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/cmd-bind-key.c between version 1.13 and 1.14

version 1.13, 2012/07/10 11:53:01 version 1.14, 2012/07/11 07:10:15
Line 27 
Line 27 
  * Bind a key to a command, this recurses through cmd_*.   * Bind a key to a command, this recurses through cmd_*.
  */   */
   
 int     cmd_bind_key_check(struct args *);  enum cmd_retval  cmd_bind_key_check(struct args *);
 int     cmd_bind_key_exec(struct cmd *, struct cmd_ctx *);  enum cmd_retval  cmd_bind_key_exec(struct cmd *, struct cmd_ctx *);
   
 int     cmd_bind_key_table(struct cmd *, struct cmd_ctx *, int);  enum cmd_retval  cmd_bind_key_table(struct cmd *, struct cmd_ctx *, int);
   
 const struct cmd_entry cmd_bind_key_entry = {  const struct cmd_entry cmd_bind_key_entry = {
         "bind-key", "bind",          "bind-key", "bind",
Line 42 
Line 42 
         cmd_bind_key_exec          cmd_bind_key_exec
 };  };
   
 int  enum cmd_retval
 cmd_bind_key_check(struct args *args)  cmd_bind_key_check(struct args *args)
 {  {
         if (args_has(args, 't')) {          if (args_has(args, 't')) {
                 if (args->argc != 2)                  if (args->argc != 2)
                         return (-1);                          return (CMD_RETURN_ERROR);
         } else {          } else {
                 if (args->argc < 2)                  if (args->argc < 2)
                         return (-1);                          return (CMD_RETURN_ERROR);
         }          }
         return (0);          return (CMD_RETURN_NORMAL);
 }  }
   
 int  enum cmd_retval
 cmd_bind_key_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_bind_key_exec(struct cmd *self, struct cmd_ctx *ctx)
 {  {
         struct args     *args = self->args;          struct args     *args = self->args;
Line 66 
Line 66 
         key = key_string_lookup_string(args->argv[0]);          key = key_string_lookup_string(args->argv[0]);
         if (key == KEYC_NONE) {          if (key == KEYC_NONE) {
                 ctx->error(ctx, "unknown key: %s", args->argv[0]);                  ctx->error(ctx, "unknown key: %s", args->argv[0]);
                 return (-1);                  return (CMD_RETURN_ERROR);
         }          }
   
         if (args_has(args, 't'))          if (args_has(args, 't'))
Line 76 
Line 76 
         if (cmdlist == NULL) {          if (cmdlist == NULL) {
                 ctx->error(ctx, "%s", cause);                  ctx->error(ctx, "%s", cause);
                 free(cause);                  free(cause);
                 return (-1);                  return (CMD_RETURN_ERROR);
         }          }
   
         if (!args_has(args, 'n'))          if (!args_has(args, 'n'))
             key |= KEYC_PREFIX;              key |= KEYC_PREFIX;
         key_bindings_add(key, args_has(args, 'r'), cmdlist);          key_bindings_add(key, args_has(args, 'r'), cmdlist);
         return (0);          return (CMD_RETURN_NORMAL);
 }  }
   
 int  enum cmd_retval
 cmd_bind_key_table(struct cmd *self, struct cmd_ctx *ctx, int key)  cmd_bind_key_table(struct cmd *self, struct cmd_ctx *ctx, int key)
 {  {
         struct args                     *args = self->args;          struct args                     *args = self->args;
Line 97 
Line 97 
         tablename = args_get(args, 't');          tablename = args_get(args, 't');
         if ((mtab = mode_key_findtable(tablename)) == NULL) {          if ((mtab = mode_key_findtable(tablename)) == NULL) {
                 ctx->error(ctx, "unknown key table: %s", tablename);                  ctx->error(ctx, "unknown key table: %s", tablename);
                 return (-1);                  return (CMD_RETURN_ERROR);
         }          }
   
         cmd = mode_key_fromstring(mtab->cmdstr, args->argv[1]);          cmd = mode_key_fromstring(mtab->cmdstr, args->argv[1]);
         if (cmd == MODEKEY_NONE) {          if (cmd == MODEKEY_NONE) {
                 ctx->error(ctx, "unknown command: %s", args->argv[1]);                  ctx->error(ctx, "unknown command: %s", args->argv[1]);
                 return (-1);                  return (CMD_RETURN_ERROR);
         }          }
   
         mtmp.key = key;          mtmp.key = key;
         mtmp.mode = !!args_has(args, 'c');          mtmp.mode = !!args_has(args, 'c');
         if ((mbind = RB_FIND(mode_key_tree, mtab->tree, &mtmp)) != NULL) {          if ((mbind = RB_FIND(mode_key_tree, mtab->tree, &mtmp)) != NULL) {
                 mbind->cmd = cmd;                  mbind->cmd = cmd;
                 return (0);                  return (CMD_RETURN_NORMAL);
         }          }
         mbind = xmalloc(sizeof *mbind);          mbind = xmalloc(sizeof *mbind);
         mbind->key = mtmp.key;          mbind->key = mtmp.key;
         mbind->mode = mtmp.mode;          mbind->mode = mtmp.mode;
         mbind->cmd = cmd;          mbind->cmd = cmd;
         RB_INSERT(mode_key_tree, mtab->tree, mbind);          RB_INSERT(mode_key_tree, mtab->tree, mbind);
         return (0);          return (CMD_RETURN_NORMAL);
 }  }

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14