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

Diff for /src/usr.bin/tmux/key-bindings.c between version 1.37 and 1.38

version 1.37, 2013/03/22 15:54:29 version 1.38, 2013/03/24 09:54:10
Line 182 
Line 182 
         RB_INIT(&key_bindings);          RB_INIT(&key_bindings);
   
         for (i = 0; i < nitems(table); i++) {          for (i = 0; i < nitems(table); i++) {
                 cmdlist = xmalloc(sizeof *cmdlist);                  cmdlist = xcalloc(1, sizeof *cmdlist);
                 TAILQ_INIT(&cmdlist->list);  
                 cmdlist->references = 1;                  cmdlist->references = 1;
                   TAILQ_INIT(&cmdlist->list);
   
                 cmd = xmalloc(sizeof *cmd);                  cmd = xcalloc(1, sizeof *cmd);
                 cmd->entry = table[i].entry;                  cmd->entry = table[i].entry;
                 if (cmd->entry->key_binding != NULL)                  if (cmd->entry->key_binding != NULL)
                         cmd->entry->key_binding(cmd, table[i].key);                          cmd->entry->key_binding(cmd, table[i].key);
Line 199 
Line 199 
         }          }
 }  }
   
 void printflike2  
 key_bindings_error(struct cmd_ctx *ctx, const char *fmt, ...)  
 {  
         va_list ap;  
         char   *msg;  
   
         if (ctx->curclient->session == NULL)  
                 return;  
   
         va_start(ap, fmt);  
         xvasprintf(&msg, fmt, ap);  
         va_end(ap);  
   
         *msg = toupper((u_char) *msg);  
         status_message_set(ctx->curclient, "%s", msg);  
         free(msg);  
 }  
   
 void printflike2  
 key_bindings_print(struct cmd_ctx *ctx, const char *fmt, ...)  
 {  
         struct winlink  *wl;  
         va_list          ap;  
   
         if (ctx->curclient->session == NULL)  
                 return;  
   
         wl = ctx->curclient->session->curw;  
         if (wl->window->active->mode != &window_copy_mode) {  
                 window_pane_reset_mode(wl->window->active);  
                 window_pane_set_mode(wl->window->active, &window_copy_mode);  
                 window_copy_init_for_output(wl->window->active);  
         }  
   
         va_start(ap, fmt);  
         window_copy_vadd(wl->window->active, fmt, ap);  
         va_end(ap);  
 }  
   
 void printflike2  
 key_bindings_info(struct cmd_ctx *ctx, const char *fmt, ...)  
 {  
         va_list ap;  
         char   *msg;  
   
         if (ctx->curclient->session == NULL)  
                 return;  
   
         if (options_get_number(&global_options, "quiet"))  
                 return;  
   
         va_start(ap, fmt);  
         xvasprintf(&msg, fmt, ap);  
         va_end(ap);  
   
         *msg = toupper((u_char) *msg);  
         status_message_set(ctx->curclient, "%s", msg);  
         free(msg);  
 }  
   
 void  void
 key_bindings_dispatch(struct key_binding *bd, struct client *c)  key_bindings_dispatch(struct key_binding *bd, struct client *c)
 {  {
         struct cmd_ctx  *ctx;  
         struct cmd      *cmd;          struct cmd      *cmd;
         int              readonly;          int              readonly;
   
         ctx = cmd_get_ctx(NULL, c);  
         ctx->error = key_bindings_error;  
         ctx->print = key_bindings_print;  
         ctx->info = key_bindings_info;  
   
         readonly = 1;          readonly = 1;
         TAILQ_FOREACH(cmd, &bd->cmdlist->list, qentry) {          TAILQ_FOREACH(cmd, &bd->cmdlist->list, qentry) {
                 if (!(cmd->entry->flags & CMD_READONLY))                  if (!(cmd->entry->flags & CMD_READONLY))
                         readonly = 0;                          readonly = 0;
         }          }
         if (!readonly && c->flags & CLIENT_READONLY) {          if (!readonly && (c->flags & CLIENT_READONLY)) {
                 key_bindings_info(ctx, "client is read-only");                  cmdq_info(c->cmdq, "client is read-only");
                 return;                  return;
         }          }
   
         cmd_list_exec(bd->cmdlist, ctx);          cmdq_run(c->cmdq, bd->cmdlist);
         cmd_free_ctx(ctx);  
 }  }

Legend:
Removed from v.1.37  
changed lines
  Added in v.1.38