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

Diff for /src/usr.bin/tmux/tty-term.c between version 1.88 and 1.89

version 1.88, 2021/03/01 10:50:14 version 1.89, 2021/06/10 07:28:45
Line 248 
Line 248 
         [TTYC_MS] = { TTYCODE_STRING, "Ms" },          [TTYC_MS] = { TTYCODE_STRING, "Ms" },
         [TTYC_OL] = { TTYCODE_STRING, "ol" },          [TTYC_OL] = { TTYCODE_STRING, "ol" },
         [TTYC_OP] = { TTYCODE_STRING, "op" },          [TTYC_OP] = { TTYCODE_STRING, "op" },
           [TTYC_RECT] = { TTYCODE_STRING, "Rect" },
         [TTYC_REV] = { TTYCODE_STRING, "rev" },          [TTYC_REV] = { TTYCODE_STRING, "rev" },
         [TTYC_RGB] = { TTYCODE_FLAG, "RGB" },          [TTYC_RGB] = { TTYCODE_FLAG, "RGB" },
         [TTYC_RIN] = { TTYCODE_STRING, "rin" },          [TTYC_RIN] = { TTYCODE_STRING, "rin" },
Line 431 
Line 432 
         struct options_entry            *o;          struct options_entry            *o;
         struct options_array_item       *a;          struct options_array_item       *a;
         union options_value             *ov;          union options_value             *ov;
         const char                      *s;          const char                      *s, *acs;
         size_t                           offset;          size_t                           offset;
         char                            *first;          char                            *first;
   
           /* Update capabilities from the option. */
         o = options_get_only(global_options, "terminal-overrides");          o = options_get_only(global_options, "terminal-overrides");
         a = options_array_first(o);          a = options_array_first(o);
         while (a != NULL) {          while (a != NULL) {
Line 447 
Line 449 
                         tty_term_apply(term, s + offset, 0);                          tty_term_apply(term, s + offset, 0);
                 a = options_array_next(a);                  a = options_array_next(a);
         }          }
   
           /* Update the RGB flag if the terminal has RGB colours. */
           if (tty_term_has(term, TTYC_SETRGBF) &&
               tty_term_has(term, TTYC_SETRGBB))
                   term->flags |= TERM_RGBCOLOURS;
           else
                   term->flags &= ~TERM_RGBCOLOURS;
           log_debug("RGBCOLOURS flag is %d", !!(term->flags & TERM_RGBCOLOURS));
   
           /*
            * Set or clear the DECSLRM flag if the terminal has the margin
            * capabilities.
            */
           if (tty_term_has(term, TTYC_CMG) && tty_term_has(term, TTYC_CLMG))
                   term->flags |= TERM_DECSLRM;
           else
                   term->flags &= ~TERM_DECSLRM;
           log_debug("DECSLRM flag is %d", !!(term->flags & TERM_DECSLRM));
   
           /*
            * Set or clear the DECFRA flag if the terminal has the rectangle
            * capability.
            */
           if (tty_term_has(term, TTYC_RECT))
                   term->flags |= TERM_DECFRA;
           else
                   term->flags &= ~TERM_DECFRA;
           log_debug("DECFRA flag is %d", !!(term->flags & TERM_DECFRA));
   
           /*
            * Terminals without am (auto right margin) wrap at at $COLUMNS - 1
            * rather than $COLUMNS (the cursor can never be beyond $COLUMNS - 1).
            *
            * Terminals without xenl (eat newline glitch) ignore a newline beyond
            * the right edge of the terminal, but tmux doesn't care about this -
            * it always uses absolute only moves the cursor with a newline when
            * also sending a linefeed.
            *
            * This is irritating, most notably because it is painful to write to
            * the very bottom-right of the screen without scrolling.
            *
            * Flag the terminal here and apply some workarounds in other places to
            * do the best possible.
            */
           if (!tty_term_flag(term, TTYC_AM))
                   term->flags |= TERM_NOAM;
           else
                   term->flags &= ~TERM_NOAM;
           log_debug("NOAM flag is %d", !!(term->flags & TERM_NOAM));
   
           /* Generate ACS table. If none is present, use nearest ASCII. */
           memset(term->acs, 0, sizeof term->acs);
           if (tty_term_has(term, TTYC_ACSC))
                   acs = tty_term_string(term, TTYC_ACSC);
           else
                   acs = "a#j+k+l+m+n+o-p-q-r-s-t+u+v+w+x|y<z>~.";
           for (; acs[0] != '\0' && acs[1] != '\0'; acs += 2)
                   term->acs[(u_char) acs[0]][0] = acs[1];
 }  }
   
 struct tty_term *  struct tty_term *
Line 460 
Line 520 
         struct options_array_item               *a;          struct options_array_item               *a;
         union options_value                     *ov;          union options_value                     *ov;
         u_int                                    i, j;          u_int                                    i, j;
         const char                              *s, *acs, *value;          const char                              *s, *value;
         size_t                                   offset, namelen;          size_t                                   offset, namelen;
         char                                    *first;          char                                    *first;
   
Line 557 
Line 617 
             (!tty_term_has(term, TTYC_SETRGBF) ||              (!tty_term_has(term, TTYC_SETRGBF) ||
             !tty_term_has(term, TTYC_SETRGBB)))              !tty_term_has(term, TTYC_SETRGBB)))
                 tty_add_features(feat, "RGB", ",");                  tty_add_features(feat, "RGB", ",");
         if (tty_term_has(term, TTYC_SETRGBF) &&  
             tty_term_has(term, TTYC_SETRGBB))  
                 term->flags |= TERM_RGBCOLOURS;  
   
         /* Apply the features and overrides again. */          /* Apply the features and overrides again. */
         tty_apply_features(term, *feat);          if (tty_apply_features(term, *feat))
         tty_term_apply_overrides(term);                  tty_term_apply_overrides(term);
   
         /*  
          * Terminals without am (auto right margin) wrap at at $COLUMNS - 1  
          * rather than $COLUMNS (the cursor can never be beyond $COLUMNS - 1).  
          *  
          * Terminals without xenl (eat newline glitch) ignore a newline beyond  
          * the right edge of the terminal, but tmux doesn't care about this -  
          * it always uses absolute only moves the cursor with a newline when  
          * also sending a linefeed.  
          *  
          * This is irritating, most notably because it is painful to write to  
          * the very bottom-right of the screen without scrolling.  
          *  
          * Flag the terminal here and apply some workarounds in other places to  
          * do the best possible.  
          */  
         if (!tty_term_flag(term, TTYC_AM))  
                 term->flags |= TERM_NOAM;  
   
         /* Generate ACS table. If none is present, use nearest ASCII. */  
         memset(term->acs, 0, sizeof term->acs);  
         if (tty_term_has(term, TTYC_ACSC))  
                 acs = tty_term_string(term, TTYC_ACSC);  
         else  
                 acs = "a#j+k+l+m+n+o-p-q-r-s-t+u+v+w+x|y<z>~.";  
         for (; acs[0] != '\0' && acs[1] != '\0'; acs += 2)  
                 term->acs[(u_char) acs[0]][0] = acs[1];  
   
         /* Log the capabilities. */          /* Log the capabilities. */
         for (i = 0; i < tty_term_ncodes(); i++)          for (i = 0; i < tty_term_ncodes(); i++)

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