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

Diff for /src/usr.bin/tmux/menu.c between version 1.39 and 1.40

version 1.39, 2021/10/18 09:48:35 version 1.40, 2021/10/22 17:12:50
Line 55 
Line 55 
     struct cmdq_item *qitem, struct client *c, struct cmd_find_state *fs)      struct cmdq_item *qitem, struct client *c, struct cmd_find_state *fs)
 {  {
         struct menu_item        *new_item;          struct menu_item        *new_item;
         const char              *key, *cmd;          const char              *key = NULL, *cmd, *suffix = "";
         char                    *s, *name;          char                    *s, *name;
         u_int                    width;          u_int                    width, max_width;
         int                      line;          int                      line;
           size_t                   keylen, slen;
   
         line = (item == NULL || item->name == NULL || *item->name == '\0');          line = (item == NULL || item->name == NULL || *item->name == '\0');
         if (line && menu->count == 0)          if (line && menu->count == 0)
Line 80 
Line 81 
                 menu->count--;                  menu->count--;
                 return;                  return;
         }          }
           max_width = c->tty.sx - 4;
   
           slen = strlen(s);
         if (*s != '-' && item->key != KEYC_UNKNOWN && item->key != KEYC_NONE) {          if (*s != '-' && item->key != KEYC_UNKNOWN && item->key != KEYC_NONE) {
                 key = key_string_lookup_key(item->key, 0);                  key = key_string_lookup_key(item->key, 0);
                   keylen = strlen(key) + 3; /* 3 = space and two brackets */
   
                   /*
                    * Only add the key if there is space for the entire item text
                    * and the key.
                    */
                   if (keylen >= max_width || slen >= max_width - keylen)
                           key = NULL;
           }
   
           if (key != NULL)
                 xasprintf(&name, "%s#[default] #[align=right](%s)", s, key);                  xasprintf(&name, "%s#[default] #[align=right](%s)", s, key);
         } else          else {
                 xasprintf(&name, "%s", s);                  if (slen > max_width) {
                           max_width--;
                           suffix = ">";
                   }
                   xasprintf(&name, "%.*s%s", (int)max_width, s, suffix);
           }
         new_item->name = name;          new_item->name = name;
         free(s);          free(s);
   

Legend:
Removed from v.1.39  
changed lines
  Added in v.1.40