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

Diff for /src/usr.bin/tmux/cmd.c between version 1.109 and 1.110

version 1.109, 2015/12/13 15:00:37 version 1.110, 2015/12/13 15:32:12
Line 433 
Line 433 
         struct cmd_state_flag   *statef = NULL;          struct cmd_state_flag   *statef = NULL;
         const char              *flag;          const char              *flag;
         int                      flags = cmd->entry->flags, everything = 0;          int                      flags = cmd->entry->flags, everything = 0;
         int                      allflags = 0;          int                      allflags = 0, targetflags;
         int                      prefer = !!(flags & CMD_PREFERUNATTACHED);  
         struct session          *s;          struct session          *s;
         struct window           *w;          struct window           *w;
         struct winlink          *wl;          struct winlink          *wl;
         struct window_pane      *wp;          struct window_pane      *wp;
           struct cmd_find_state   *fs;
   
           /* Set up state for either -t or -s. */
         if (c == 't') {          if (c == 't') {
                 statef = &cmdq->state.tflag;                  statef = &cmdq->state.tflag;
                 allflags = CMD_ALL_T;                  allflags = CMD_ALL_T;
Line 469 
Line 470 
                 goto complete_everything;                  goto complete_everything;
   
         /* Fill in state using command (current or base) flags. */          /* Fill in state using command (current or base) flags. */
           if (flags & CMD_PREFERUNATTACHED)
                   targetflags = CMD_FIND_PREFER_UNATTACHED;
           else
                   targetflags = 0;
         switch (cmd->entry->flags & allflags) {          switch (cmd->entry->flags & allflags) {
         case 0:          case 0:
                 break;                  break;
         case CMD_SESSION_T|CMD_PANE_T:          case CMD_SESSION_T|CMD_PANE_T:
         case CMD_SESSION_S|CMD_PANE_S:          case CMD_SESSION_S|CMD_PANE_S:
                 if (flag != NULL && flag[strcspn(flag, ":.")] != '\0') {                  if (flag != NULL && flag[strcspn(flag, ":.")] != '\0') {
                         statef->wl = cmd_find_pane(cmdq, flag, &statef->s,                          fs = cmd_find_target(cmdq, flag, CMD_FIND_PANE,
                             &statef->wp);                              targetflags);
                         if (statef->wl == NULL)                          if (fs == NULL)
                                 return (-1);                                  return (-1);
                           statef->s = fs->s;
                           statef->wl = fs->wl;
                           statef->wp = fs->wp;
                 } else {                  } else {
                         statef->s = cmd_find_session(cmdq, flag, prefer);                          fs = cmd_find_target(cmdq, flag, CMD_FIND_SESSION,
                         if (statef->s == NULL)                              targetflags);
                           if (fs == NULL)
                                 return (-1);                                  return (-1);
                           statef->s = fs->s;
   
                         s = statef->s;  
                         if (flag == NULL) {                          if (flag == NULL) {
                                 statef->wl = s->curw;                                  statef->wl = statef->s->curw;
                                 statef->wp = s->curw->window->active;                                  statef->wp = statef->s->curw->window->active;
                         } else {                          } else {
                                   s = statef->s;
                                 if ((w = window_find_by_id_str(flag)) != NULL)                                  if ((w = window_find_by_id_str(flag)) != NULL)
                                         wp = w->active;                                          wp = w->active;
                                 else {                                  else {
Line 506 
Line 516 
                 break;                  break;
         case CMD_MOVEW_R|CMD_INDEX_T:          case CMD_MOVEW_R|CMD_INDEX_T:
         case CMD_MOVEW_R|CMD_INDEX_S:          case CMD_MOVEW_R|CMD_INDEX_S:
                 statef->s = cmd_find_session(cmdq, flag, prefer);                  fs = cmd_find_target(cmdq, flag, CMD_FIND_SESSION, targetflags);
                 if (statef->s == NULL) {                  if (fs != NULL)
                         statef->idx = cmd_find_index(cmdq, flag, &statef->s);                          statef->s = fs->s;
                         if (statef->idx == -2)                  else {
                           fs = cmd_find_target(cmdq, flag, CMD_FIND_WINDOW,
                               CMD_FIND_WINDOW_INDEX);
                           if (fs == NULL)
                                 return (-1);                                  return (-1);
                           statef->s = fs->s;
                           statef->idx = fs->idx;
                 }                  }
                 break;                  break;
         case CMD_SESSION_T:          case CMD_SESSION_T:
         case CMD_SESSION_S:          case CMD_SESSION_S:
                 statef->s = cmd_find_session(cmdq, flag, prefer);                  fs = cmd_find_target(cmdq, flag, CMD_FIND_SESSION, targetflags);
                 if (statef->s == NULL)                  if (fs == NULL)
                         return (-1);                          return (-1);
                   statef->s = fs->s;
                 break;                  break;
           case CMD_WINDOW_MARKED_T:
           case CMD_WINDOW_MARKED_S:
                   targetflags |= CMD_FIND_DEFAULT_MARKED;
                   /* FALLTHROUGH */
         case CMD_WINDOW_T:          case CMD_WINDOW_T:
         case CMD_WINDOW_S:          case CMD_WINDOW_S:
                 statef->wl = cmd_find_window(cmdq, flag, &statef->s);                  fs = cmd_find_target(cmdq, flag, CMD_FIND_WINDOW, targetflags);
                 if (statef->wl == NULL)                  if (fs == NULL)
                         return (-1);                          return (-1);
                   statef->s = fs->s;
                   statef->wl = fs->wl;
                 break;                  break;
         case CMD_WINDOW_MARKED_T:          case CMD_PANE_MARKED_T:
         case CMD_WINDOW_MARKED_S:          case CMD_PANE_MARKED_S:
                 statef->wl = cmd_find_window_marked(cmdq, flag, &statef->s);                  targetflags |= CMD_FIND_DEFAULT_MARKED;
                 if (statef->wl == NULL)                  /* FALLTHROUGH */
                         return (-1);  
                 break;  
         case CMD_PANE_T:          case CMD_PANE_T:
         case CMD_PANE_S:          case CMD_PANE_S:
                 statef->wl = cmd_find_pane(cmdq, flag, &statef->s,                  fs = cmd_find_target(cmdq, flag, CMD_FIND_PANE, targetflags);
                     &statef->wp);                  if (fs == NULL)
                 if (statef->wl == NULL)  
                         return (-1);                          return (-1);
                   statef->s = fs->s;
                   statef->wl = fs->wl;
                   statef->wp = fs->wp;
                 break;                  break;
         case CMD_PANE_MARKED_T:  
         case CMD_PANE_MARKED_S:  
                 statef->wl = cmd_find_pane_marked(cmdq, flag, &statef->s,  
                     &statef->wp);  
                 if (statef->wl == NULL)  
                         return (-1);  
                 break;  
         case CMD_INDEX_T:          case CMD_INDEX_T:
         case CMD_INDEX_S:          case CMD_INDEX_S:
                 statef->idx = cmd_find_index(cmdq, flag, &statef->s);                  fs = cmd_find_target(cmdq, flag, CMD_FIND_WINDOW,
                 if (statef->idx == -2)                      CMD_FIND_WINDOW_INDEX);
                   if (fs == NULL)
                         return (-1);                          return (-1);
                   statef->s = fs->s;
                   statef->idx = fs->idx;
                 break;                  break;
         default:          default:
                 fatalx("too many -%c for %s", c, cmd->entry->name);                  fatalx("too many -%c for %s", c, cmd->entry->name);
Line 567 
Line 585 
         if (statef->s == NULL) {          if (statef->s == NULL) {
                 if (state->c != NULL)                  if (state->c != NULL)
                         statef->s = state->c->session;                          statef->s = state->c->session;
                 if (statef->s == NULL)  
                         statef->s = cmd_find_current(cmdq);  
                 if (statef->s == NULL) {                  if (statef->s == NULL) {
                           fs = cmd_find_target(cmdq, NULL, CMD_FIND_SESSION,
                               CMD_FIND_QUIET);
                           if (fs != NULL)
                                   statef->s = fs->s;
                   }
                   if (statef->s == NULL) {
                         if (flags & CMD_CANFAIL)                          if (flags & CMD_CANFAIL)
                                 return (0);                                  return (0);
   
                         cmdq_error(cmdq, "no current session");                          cmdq_error(cmdq, "no current session");
                         return (-1);                          return (-1);
                 }                  }
         }          }
         if (statef->wl == NULL)          if (statef->wl == NULL) {
                 statef->wl = cmd_find_window(cmdq, flag, &statef->s);                  fs = cmd_find_target(cmdq, flag, CMD_FIND_WINDOW, 0);
         if (statef->wp == NULL)                  if (fs != NULL) {
                 statef->wl = cmd_find_pane(cmdq, flag, &statef->s, &statef->wp);                          statef->s = fs->s;
                           statef->wl = fs->wl;
                   }
           }
           if (statef->wp == NULL) {
                   fs = cmd_find_target(cmdq, flag, CMD_FIND_PANE, 0);
                   if (fs != NULL) {
                           statef->s = fs->s;
                           statef->wl = fs->wl;
                           statef->wp = fs->wp;
                   }
           }
         return (0);          return (0);
 }  }
   

Legend:
Removed from v.1.109  
changed lines
  Added in v.1.110