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

Diff for /src/usr.bin/tmux/cmd-list-keys.c between version 1.5 and 1.6

version 1.5, 2009/07/26 12:58:44 version 1.6, 2009/07/28 07:03:32
Line 28 
Line 28 
   
 int     cmd_list_keys_exec(struct cmd *, struct cmd_ctx *);  int     cmd_list_keys_exec(struct cmd *, struct cmd_ctx *);
   
   int     cmd_list_keys_table(struct cmd *, struct cmd_ctx *);
   
 const struct cmd_entry cmd_list_keys_entry = {  const struct cmd_entry cmd_list_keys_entry = {
         "list-keys", "lsk",          "list-keys", "lsk",
         "",          "[-t key-table]",
         0, 0,          0, 0,
         NULL,          cmd_target_init,
         NULL,          cmd_target_parse,
         cmd_list_keys_exec,          cmd_list_keys_exec,
         NULL,          cmd_target_free,
         NULL          cmd_target_print
 };  };
   
 int  int
 cmd_list_keys_exec(unused struct cmd *self, struct cmd_ctx *ctx)  cmd_list_keys_exec(struct cmd *self, struct cmd_ctx *ctx)
 {  {
           struct cmd_target_data  *data = self->data;
         struct key_binding      *bd;          struct key_binding      *bd;
         const char              *key;          const char              *key;
         char                     tmp[BUFSIZ], keytmp[64];          char                     tmp[BUFSIZ], keytmp[64];
         int                      width, keywidth;          int                      width, keywidth;
   
           if (data->target != NULL)
                   return (cmd_list_keys_table(self, ctx));
   
         width = 0;          width = 0;
         SPLAY_FOREACH(bd, key_bindings, &key_bindings) {          SPLAY_FOREACH(bd, key_bindings, &key_bindings) {
                 key = key_string_lookup_key(bd->key & ~KEYC_PREFIX);                  key = key_string_lookup_key(bd->key & ~KEYC_PREFIX);
Line 72 
Line 78 
                         key = keytmp;                          key = keytmp;
                 }                  }
                 ctx->print(ctx, "%*s: %s", width, key, tmp);                  ctx->print(ctx, "%*s: %s", width, key, tmp);
           }
   
           return (0);
   }
   
   int
   cmd_list_keys_table(struct cmd *self, struct cmd_ctx *ctx)
   {
           struct cmd_target_data          *data = self->data;
           const struct mode_key_table     *mtab;
           struct mode_key_binding         *mbind;
           const char                      *key, *cmdstr, *mode;
           int                              width, keywidth;
   
           for (mtab = mode_key_tables; mtab->name != NULL; mtab++) {
                   if (strcasecmp(data->target, mtab->name) == 0)
                           break;
           }
           if (mtab->name == NULL) {
                   ctx->error(ctx, "unknown key table: %s", data->target);
                   return (-1);
           }
   
           width = 0;
           SPLAY_FOREACH(mbind, mode_key_tree, mtab->tree) {
                   key = key_string_lookup_key(mbind->key);
                   if (key == NULL)
                           continue;
   
                   keywidth = strlen(key) + 1;
                   if (keywidth > width)
                           width = keywidth;
           }
   
           SPLAY_FOREACH(mbind, mode_key_tree, mtab->tree) {
                   key = key_string_lookup_key(mbind->key);
                   if (key == NULL)
                           continue;
   
                   mode = "";
                   if (mbind->mode != 0)
                           mode = "(command mode) ";
                   cmdstr = mode_key_tostring(mtab->cmdstr, mbind->cmd);
                   if (cmdstr != NULL)
                           ctx->print(ctx, "%*s: %s%s", width, key, mode, cmdstr);
         }          }
   
         return (0);          return (0);

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6