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

Diff for /src/usr.bin/tmux/cmd-new-window.c between version 1.89 and 1.90

version 1.89, 2020/06/25 08:56:02 version 1.90, 2021/02/05 12:23:49
Line 38 
Line 38 
         .name = "new-window",          .name = "new-window",
         .alias = "neww",          .alias = "neww",
   
         .args = { "abc:de:F:kn:Pt:", 0, -1 },          .args = { "abc:de:F:kn:PSt:", 0, -1 },
         .usage = "[-abdkP] [-c start-directory] [-e environment] [-F format] "          .usage = "[-abdkPS] [-c start-directory] [-e environment] [-F format] "
                  "[-n window-name] " CMD_TARGET_WINDOW_USAGE " [command]",                   "[-n window-name] " CMD_TARGET_WINDOW_USAGE " [command]",
   
         .target = { 't', CMD_FIND_WINDOW, CMD_FIND_WINDOW_INDEX },          .target = { 't', CMD_FIND_WINDOW, CMD_FIND_WINDOW_INDEX },
Line 52 
Line 52 
 cmd_new_window_exec(struct cmd *self, struct cmdq_item *item)  cmd_new_window_exec(struct cmd *self, struct cmdq_item *item)
 {  {
         struct args             *args = cmd_get_args(self);          struct args             *args = cmd_get_args(self);
           struct client           *c = cmdq_get_client(item);
         struct cmd_find_state   *current = cmdq_get_current(item);          struct cmd_find_state   *current = cmdq_get_current(item);
         struct cmd_find_state   *target = cmdq_get_target(item);          struct cmd_find_state   *target = cmdq_get_target(item);
         struct spawn_context     sc;          struct spawn_context     sc;
Line 59 
Line 60 
         struct session          *s = target->s;          struct session          *s = target->s;
         struct winlink          *wl = target->wl;          struct winlink          *wl = target->wl;
         int                      idx = target->idx, before;          int                      idx = target->idx, before;
         struct winlink          *new_wl;          struct winlink          *new_wl = NULL;
         char                    *cause = NULL, *cp;          char                    *cause = NULL, *cp;
         const char              *template, *add;          const char              *template, *add, *name;
         struct cmd_find_state    fs;          struct cmd_find_state    fs;
         struct args_value       *value;          struct args_value       *value;
   
           /*
            * If -S and -n are given and -t is not and a single window with this
            * name already exists, select it.
            */
           name = args_get(args, 'n');
           if (args_has(args, 'S') && name != NULL && target->idx == -1) {
                   RB_FOREACH(wl, winlinks, &s->windows) {
                           if (strcmp(wl->window->name, name) != 0)
                                   continue;
                           if (new_wl == NULL) {
                                   new_wl = wl;
                                   continue;
                           }
                           cmdq_error(item, "multiple windows named %s", name);
                           return (CMD_RETURN_ERROR);
                   }
                   if (new_wl != NULL) {
                           if (args_has(args, 'd'))
                                   return (CMD_RETURN_NORMAL);
                           if (session_set_current(s, new_wl) == 0)
                                   server_redraw_session(s);
                           if (c != NULL && c->session != NULL)
                                   s->curw->window->latest = c;
                           recalculate_sizes();
                           return (CMD_RETURN_NORMAL);
                   }
           }
   
   
         before = args_has(args, 'b');          before = args_has(args, 'b');
         if (args_has(args, 'a') || before) {          if (args_has(args, 'a') || before) {

Legend:
Removed from v.1.89  
changed lines
  Added in v.1.90