mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	If we can identify the terminal as iTerm2 or as tmux, we can be sure
they support 256 and RGB colours, so set those flags too.
This commit is contained in:
		
							
								
								
									
										28
									
								
								tty-term.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								tty-term.c
									
									
									
									
									
								
							@@ -522,11 +522,16 @@ tty_term_find(char *name, int fd, char **cause)
 | 
			
		||||
		goto error;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Figure out if we have 256 colours (or more). */
 | 
			
		||||
	if (tty_term_number(term, TTYC_COLORS) >= 256 ||
 | 
			
		||||
	    tty_term_has(term, TTYC_RGB))
 | 
			
		||||
	/* Set flag if terminal has 256 colours. */
 | 
			
		||||
	if (tty_term_number(term, TTYC_COLORS) >= 256)
 | 
			
		||||
		term->flags |= TERM_256COLOURS;
 | 
			
		||||
 | 
			
		||||
	/* Set flag if terminal has RGB colours. */
 | 
			
		||||
	if ((tty_term_flag(term, TTYC_TC) || tty_term_has(term, TTYC_RGB)) ||
 | 
			
		||||
	    (tty_term_has(term, TTYC_SETRGBF) &&
 | 
			
		||||
	    tty_term_has(term, TTYC_SETRGBB)))
 | 
			
		||||
		term->flags |= TERM_RGBCOLOURS;
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * Terminals without xenl (eat newline glitch) wrap at at $COLUMNS - 1
 | 
			
		||||
	 * rather than $COLUMNS (the cursor can never be beyond $COLUMNS - 1).
 | 
			
		||||
@@ -561,22 +566,7 @@ tty_term_find(char *name, int fd, char **cause)
 | 
			
		||||
		code->type = TTYCODE_STRING;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/*
 | 
			
		||||
	 * On terminals with RGB colour (Tc or RGB), fill in setrgbf and
 | 
			
		||||
	 * setrgbb if they are missing.
 | 
			
		||||
	 */
 | 
			
		||||
	if ((tty_term_flag(term, TTYC_TC) || tty_term_flag(term, TTYC_RGB)) &&
 | 
			
		||||
	    !tty_term_has(term, TTYC_SETRGBF) &&
 | 
			
		||||
	    !tty_term_has(term, TTYC_SETRGBB)) {
 | 
			
		||||
		code = &term->codes[TTYC_SETRGBF];
 | 
			
		||||
		code->value.string = xstrdup("\033[38;2;%p1%d;%p2%d;%p3%dm");
 | 
			
		||||
		code->type = TTYCODE_STRING;
 | 
			
		||||
		code = &term->codes[TTYC_SETRGBB];
 | 
			
		||||
		code->value.string = xstrdup("\033[48;2;%p1%d;%p2%d;%p3%dm");
 | 
			
		||||
		code->type = TTYCODE_STRING;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Log it. */
 | 
			
		||||
	/* Log the capabilities. */
 | 
			
		||||
	for (i = 0; i < tty_term_ncodes(); i++)
 | 
			
		||||
		log_debug("%s%s", name, tty_term_describe(term, i));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user