Compare commits
	
		
			1 Commits
		
	
	
		
			feat/title
			...
			feat/bold-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6785ee8e34 | 
							
								
								
									
										52
									
								
								config.def.h
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								config.def.h
									
									
									
									
									
								
							@@ -56,12 +56,6 @@ int allowwindowops = 0;
 | 
				
			|||||||
static double minlatency = 8;
 | 
					static double minlatency = 8;
 | 
				
			||||||
static double maxlatency = 33;
 | 
					static double maxlatency = 33;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 * Synchronized-Update timeout in ms
 | 
					 | 
				
			||||||
 * https://gitlab.com/gnachman/iterm2/-/wikis/synchronized-updates-spec
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
static uint su_timeout = 200;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * blinking timeout (set to 0 to disable blinking) for the terminal blinking
 | 
					 * blinking timeout (set to 0 to disable blinking) for the terminal blinking
 | 
				
			||||||
 * attribute.
 | 
					 * attribute.
 | 
				
			||||||
@@ -105,24 +99,32 @@ float alpha = 0.8;
 | 
				
			|||||||
/* Terminal colors (16 first used in escape sequence) */
 | 
					/* Terminal colors (16 first used in escape sequence) */
 | 
				
			||||||
static const char *colorname[] = {
 | 
					static const char *colorname[] = {
 | 
				
			||||||
	/* 8 normal colors */
 | 
						/* 8 normal colors */
 | 
				
			||||||
	[0] = "#282828", /* hard contrast: #1d2021 / soft contrast: #32302f */
 | 
						"black",
 | 
				
			||||||
	[1] = "#cc241d", /* red     */
 | 
						"red3",
 | 
				
			||||||
	[2] = "#98971a", /* green   */
 | 
						"green3",
 | 
				
			||||||
	[3] = "#d79921", /* yellow  */
 | 
						"yellow3",
 | 
				
			||||||
	[4] = "#458588", /* blue    */
 | 
						"blue2",
 | 
				
			||||||
	[5] = "#b16286", /* magenta */
 | 
						"magenta3",
 | 
				
			||||||
	[6] = "#689d6a", /* cyan    */
 | 
						"cyan3",
 | 
				
			||||||
	[7] = "#a89984", /* white   */
 | 
						"gray90",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* 8 bright colors */
 | 
						/* 8 bright colors */
 | 
				
			||||||
	[8]  = "#928374", /* black   */
 | 
						"gray50",
 | 
				
			||||||
	[9]  = "#fb4934", /* red     */
 | 
						"red",
 | 
				
			||||||
	[10] = "#b8bb26", /* green   */
 | 
						"green",
 | 
				
			||||||
	[11] = "#fabd2f", /* yellow  */
 | 
						"yellow",
 | 
				
			||||||
	[12] = "#83a598", /* blue    */
 | 
						"#5c5cff",
 | 
				
			||||||
	[13] = "#d3869b", /* magenta */
 | 
						"magenta",
 | 
				
			||||||
	[14] = "#8ec07c", /* cyan    */
 | 
						"cyan",
 | 
				
			||||||
	[15] = "#ebdbb2", /* white   */
 | 
						"white",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						[255] = 0,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* more colors can be added after 255 to use with DefaultXX */
 | 
				
			||||||
 | 
						"#cccccc",
 | 
				
			||||||
 | 
						"#555555",
 | 
				
			||||||
 | 
						"gray90", /* default foreground colour */
 | 
				
			||||||
 | 
						"black", /* default background colour */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -130,9 +132,9 @@ static const char *colorname[] = {
 | 
				
			|||||||
 * Default colors (colorname index)
 | 
					 * Default colors (colorname index)
 | 
				
			||||||
 * foreground, background, cursor, reverse cursor
 | 
					 * foreground, background, cursor, reverse cursor
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
unsigned int defaultfg = 15;
 | 
					unsigned int defaultfg = 258;
 | 
				
			||||||
unsigned int defaultbg = 0;
 | 
					unsigned int defaultbg = 259;
 | 
				
			||||||
unsigned int defaultcs = 15;
 | 
					unsigned int defaultcs = 256;
 | 
				
			||||||
static unsigned int defaultrcs = 257;
 | 
					static unsigned int defaultrcs = 257;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										82
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										82
									
								
								st.c
									
									
									
									
									
								
							@@ -42,8 +42,6 @@
 | 
				
			|||||||
#define ISCONTROLC1(c)		(BETWEEN(c, 0x80, 0x9f))
 | 
					#define ISCONTROLC1(c)		(BETWEEN(c, 0x80, 0x9f))
 | 
				
			||||||
#define ISCONTROL(c)		(ISCONTROLC0(c) || ISCONTROLC1(c))
 | 
					#define ISCONTROL(c)		(ISCONTROLC0(c) || ISCONTROLC1(c))
 | 
				
			||||||
#define ISDELIM(u)		(u && wcschr(worddelimiters, u))
 | 
					#define ISDELIM(u)		(u && wcschr(worddelimiters, u))
 | 
				
			||||||
#define STRESCARGREST(n)	((n) == 0 ? strescseq.buf : strescseq.argp[(n)-1] + 1)
 | 
					 | 
				
			||||||
#define STRESCARGJUST(n)	(*(strescseq.argp[n]) = '\0', STRESCARGREST(n))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum term_mode {
 | 
					enum term_mode {
 | 
				
			||||||
	MODE_WRAP        = 1 << 0,
 | 
						MODE_WRAP        = 1 << 0,
 | 
				
			||||||
@@ -150,7 +148,7 @@ typedef struct {
 | 
				
			|||||||
	char *buf;             /* allocated raw string */
 | 
						char *buf;             /* allocated raw string */
 | 
				
			||||||
	size_t siz;            /* allocation size */
 | 
						size_t siz;            /* allocation size */
 | 
				
			||||||
	size_t len;            /* raw string length */
 | 
						size_t len;            /* raw string length */
 | 
				
			||||||
	char *argp[STR_ARG_SIZ]; /* pointers to the end of nth argument */
 | 
						char *args[STR_ARG_SIZ];
 | 
				
			||||||
	int narg;              /* nb of args */
 | 
						int narg;              /* nb of args */
 | 
				
			||||||
} STREscape;
 | 
					} STREscape;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -234,33 +232,6 @@ static const uchar utfmask[UTF_SIZ + 1] = {0xC0, 0x80, 0xE0, 0xF0, 0xF8};
 | 
				
			|||||||
static const Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000};
 | 
					static const Rune utfmin[UTF_SIZ + 1] = {       0,    0,  0x80,  0x800,  0x10000};
 | 
				
			||||||
static const Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF};
 | 
					static const Rune utfmax[UTF_SIZ + 1] = {0x10FFFF, 0x7F, 0x7FF, 0xFFFF, 0x10FFFF};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <time.h>
 | 
					 | 
				
			||||||
static int su = 0;
 | 
					 | 
				
			||||||
struct timespec sutv;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
tsync_begin()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	clock_gettime(CLOCK_MONOTONIC, &sutv);
 | 
					 | 
				
			||||||
	su = 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void
 | 
					 | 
				
			||||||
tsync_end()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	su = 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int
 | 
					 | 
				
			||||||
tinsync(uint timeout)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct timespec now;
 | 
					 | 
				
			||||||
	if (su && !clock_gettime(CLOCK_MONOTONIC, &now)
 | 
					 | 
				
			||||||
	       && TIMEDIFF(now, sutv) >= timeout)
 | 
					 | 
				
			||||||
		su = 0;
 | 
					 | 
				
			||||||
	return su;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
ssize_t
 | 
					ssize_t
 | 
				
			||||||
xwrite(int fd, const char *s, size_t len)
 | 
					xwrite(int fd, const char *s, size_t len)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -843,9 +814,6 @@ ttynew(const char *line, char *cmd, const char *out, char **args)
 | 
				
			|||||||
	return cmdfd;
 | 
						return cmdfd;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int twrite_aborted = 0;
 | 
					 | 
				
			||||||
int ttyread_pending() { return twrite_aborted; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
size_t
 | 
					size_t
 | 
				
			||||||
ttyread(void)
 | 
					ttyread(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -854,7 +822,7 @@ ttyread(void)
 | 
				
			|||||||
	int ret, written;
 | 
						int ret, written;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* append read bytes to unprocessed bytes */
 | 
						/* append read bytes to unprocessed bytes */
 | 
				
			||||||
	ret = twrite_aborted ? 1 : read(cmdfd, buf+buflen, LEN(buf)-buflen);
 | 
						ret = read(cmdfd, buf+buflen, LEN(buf)-buflen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (ret) {
 | 
						switch (ret) {
 | 
				
			||||||
	case 0:
 | 
						case 0:
 | 
				
			||||||
@@ -862,7 +830,7 @@ ttyread(void)
 | 
				
			|||||||
	case -1:
 | 
						case -1:
 | 
				
			||||||
		die("couldn't read from shell: %s\n", strerror(errno));
 | 
							die("couldn't read from shell: %s\n", strerror(errno));
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		buflen += twrite_aborted ? 0 : ret;
 | 
							buflen += ret;
 | 
				
			||||||
		written = twrite(buf, buflen, 0);
 | 
							written = twrite(buf, buflen, 0);
 | 
				
			||||||
		buflen -= written;
 | 
							buflen -= written;
 | 
				
			||||||
		/* keep any incomplete UTF-8 byte sequence for the next call */
 | 
							/* keep any incomplete UTF-8 byte sequence for the next call */
 | 
				
			||||||
@@ -1022,7 +990,6 @@ tsetdirtattr(int attr)
 | 
				
			|||||||
void
 | 
					void
 | 
				
			||||||
tfulldirt(void)
 | 
					tfulldirt(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	tsync_end();
 | 
					 | 
				
			||||||
	tsetdirt(0, term.row-1);
 | 
						tsetdirt(0, term.row-1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1912,30 +1879,29 @@ strhandle(void)
 | 
				
			|||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	term.esc &= ~(ESC_STR_END|ESC_STR);
 | 
						term.esc &= ~(ESC_STR_END|ESC_STR);
 | 
				
			||||||
	strescseq.buf[strescseq.len] = '\0';
 | 
						strparse();
 | 
				
			||||||
 | 
						par = (narg = strescseq.narg) ? atoi(strescseq.args[0]) : 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch (strescseq.type) {
 | 
						switch (strescseq.type) {
 | 
				
			||||||
	case ']': /* OSC -- Operating System Command */
 | 
						case ']': /* OSC -- Operating System Command */
 | 
				
			||||||
		strparse();
 | 
					 | 
				
			||||||
		par = (narg = strescseq.narg) ? atoi(STRESCARGJUST(0)) : 0;
 | 
					 | 
				
			||||||
		switch (par) {
 | 
							switch (par) {
 | 
				
			||||||
		case 0:
 | 
							case 0:
 | 
				
			||||||
			if (narg > 1) {
 | 
								if (narg > 1) {
 | 
				
			||||||
				xsettitle(STRESCARGREST(1));
 | 
									xsettitle(strescseq.args[1]);
 | 
				
			||||||
				xseticontitle(STRESCARGREST(1));
 | 
									xseticontitle(strescseq.args[1]);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		case 1:
 | 
							case 1:
 | 
				
			||||||
			if (narg > 1)
 | 
								if (narg > 1)
 | 
				
			||||||
				xseticontitle(STRESCARGREST(1));
 | 
									xseticontitle(strescseq.args[1]);
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		case 2:
 | 
							case 2:
 | 
				
			||||||
			if (narg > 1)
 | 
								if (narg > 1)
 | 
				
			||||||
				xsettitle(STRESCARGREST(1));
 | 
									xsettitle(strescseq.args[1]);
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		case 52:
 | 
							case 52:
 | 
				
			||||||
			if (narg > 2 && allowwindowops) {
 | 
								if (narg > 2 && allowwindowops) {
 | 
				
			||||||
				dec = base64dec(STRESCARGJUST(2));
 | 
									dec = base64dec(strescseq.args[2]);
 | 
				
			||||||
				if (dec) {
 | 
									if (dec) {
 | 
				
			||||||
					xsetsel(dec);
 | 
										xsetsel(dec);
 | 
				
			||||||
					xclipcopy();
 | 
										xclipcopy();
 | 
				
			||||||
@@ -1949,7 +1915,7 @@ strhandle(void)
 | 
				
			|||||||
		case 12:
 | 
							case 12:
 | 
				
			||||||
			if (narg < 2)
 | 
								if (narg < 2)
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			p = STRESCARGREST(1);
 | 
								p = strescseq.args[1];
 | 
				
			||||||
			if ((j = par - 10) < 0 || j >= LEN(osc_table))
 | 
								if ((j = par - 10) < 0 || j >= LEN(osc_table))
 | 
				
			||||||
				break; /* shouldn't be possible */
 | 
									break; /* shouldn't be possible */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1965,10 +1931,10 @@ strhandle(void)
 | 
				
			|||||||
		case 4: /* color set */
 | 
							case 4: /* color set */
 | 
				
			||||||
			if (narg < 3)
 | 
								if (narg < 3)
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			p = STRESCARGJUST(2);
 | 
								p = strescseq.args[2];
 | 
				
			||||||
			/* FALLTHROUGH */
 | 
								/* FALLTHROUGH */
 | 
				
			||||||
		case 104: /* color reset */
 | 
							case 104: /* color reset */
 | 
				
			||||||
			j = (narg > 1) ? atoi(STRESCARGJUST(1)) : -1;
 | 
								j = (narg > 1) ? atoi(strescseq.args[1]) : -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (p && !strcmp(p, "?")) {
 | 
								if (p && !strcmp(p, "?")) {
 | 
				
			||||||
				osc_color_response(j, 0, 1);
 | 
									osc_color_response(j, 0, 1);
 | 
				
			||||||
@@ -1990,15 +1956,9 @@ strhandle(void)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case 'k': /* old title set compatibility */
 | 
						case 'k': /* old title set compatibility */
 | 
				
			||||||
		xsettitle(strescseq.buf);
 | 
							xsettitle(strescseq.args[0]);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	case 'P': /* DCS -- Device Control String */
 | 
						case 'P': /* DCS -- Device Control String */
 | 
				
			||||||
		/* https://gitlab.com/gnachman/iterm2/-/wikis/synchronized-updates-spec */
 | 
					 | 
				
			||||||
		if (strstr(strescseq.buf, "=1s") == strescseq.buf)
 | 
					 | 
				
			||||||
			tsync_begin();  /* BSU */
 | 
					 | 
				
			||||||
		else if (strstr(strescseq.buf, "=2s") == strescseq.buf)
 | 
					 | 
				
			||||||
			tsync_end();  /* ESU */
 | 
					 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	case '_': /* APC -- Application Program Command */
 | 
						case '_': /* APC -- Application Program Command */
 | 
				
			||||||
	case '^': /* PM -- Privacy Message */
 | 
						case '^': /* PM -- Privacy Message */
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
@@ -2015,17 +1975,18 @@ strparse(void)
 | 
				
			|||||||
	char *p = strescseq.buf;
 | 
						char *p = strescseq.buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	strescseq.narg = 0;
 | 
						strescseq.narg = 0;
 | 
				
			||||||
 | 
						strescseq.buf[strescseq.len] = '\0';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (*p == '\0')
 | 
						if (*p == '\0')
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	while (strescseq.narg < STR_ARG_SIZ) {
 | 
						while (strescseq.narg < STR_ARG_SIZ) {
 | 
				
			||||||
 | 
							strescseq.args[strescseq.narg++] = p;
 | 
				
			||||||
		while ((c = *p) != ';' && c != '\0')
 | 
							while ((c = *p) != ';' && c != '\0')
 | 
				
			||||||
			p++;
 | 
								++p;
 | 
				
			||||||
		strescseq.argp[strescseq.narg++] = p;
 | 
					 | 
				
			||||||
		if (c == '\0')
 | 
							if (c == '\0')
 | 
				
			||||||
			return;
 | 
								return;
 | 
				
			||||||
		p++;
 | 
							*p++ = '\0';
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2546,9 +2507,6 @@ twrite(const char *buf, int buflen, int show_ctrl)
 | 
				
			|||||||
	Rune u;
 | 
						Rune u;
 | 
				
			||||||
	int n;
 | 
						int n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	int su0 = su;
 | 
					 | 
				
			||||||
	twrite_aborted = 0;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for (n = 0; n < buflen; n += charsize) {
 | 
						for (n = 0; n < buflen; n += charsize) {
 | 
				
			||||||
		if (IS_SET(MODE_UTF8)) {
 | 
							if (IS_SET(MODE_UTF8)) {
 | 
				
			||||||
			/* process a complete utf8 char */
 | 
								/* process a complete utf8 char */
 | 
				
			||||||
@@ -2559,10 +2517,6 @@ twrite(const char *buf, int buflen, int show_ctrl)
 | 
				
			|||||||
			u = buf[n] & 0xFF;
 | 
								u = buf[n] & 0xFF;
 | 
				
			||||||
			charsize = 1;
 | 
								charsize = 1;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (su0 && !su) {
 | 
					 | 
				
			||||||
			twrite_aborted = 1;
 | 
					 | 
				
			||||||
			break;  // ESU - allow rendering before a new BSU
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if (show_ctrl && ISCONTROL(u)) {
 | 
							if (show_ctrl && ISCONTROL(u)) {
 | 
				
			||||||
			if (u & 0x80) {
 | 
								if (u & 0x80) {
 | 
				
			||||||
				u &= 0x7f;
 | 
									u &= 0x7f;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								st.info
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								st.info
									
									
									
									
									
								
							@@ -191,7 +191,6 @@ st-mono| simpleterm monocolor,
 | 
				
			|||||||
	Ms=\E]52;%p1%s;%p2%s\007,
 | 
						Ms=\E]52;%p1%s;%p2%s\007,
 | 
				
			||||||
	Se=\E[2 q,
 | 
						Se=\E[2 q,
 | 
				
			||||||
	Ss=\E[%p1%d q,
 | 
						Ss=\E[%p1%d q,
 | 
				
			||||||
	Sync=\EP=%p1%ds\E\\,
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
st| simpleterm,
 | 
					st| simpleterm,
 | 
				
			||||||
	use=st-mono,
 | 
						use=st-mono,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										45
									
								
								x.c
									
									
									
									
									
								
							
							
						
						
									
										45
									
								
								x.c
									
									
									
									
									
								
							@@ -689,8 +689,6 @@ setsel(char *str, Time t)
 | 
				
			|||||||
	XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t);
 | 
						XSetSelectionOwner(xw.dpy, XA_PRIMARY, xw.win, t);
 | 
				
			||||||
	if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
 | 
						if (XGetSelectionOwner(xw.dpy, XA_PRIMARY) != xw.win)
 | 
				
			||||||
		selclear();
 | 
							selclear();
 | 
				
			||||||
 | 
					 | 
				
			||||||
	xclipcopy();
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
@@ -714,9 +712,7 @@ brelease(XEvent *e)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if (mouseaction(e, 1))
 | 
						if (mouseaction(e, 1))
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	if (btn == Button3)
 | 
						if (btn == Button1)
 | 
				
			||||||
		selpaste(NULL);
 | 
					 | 
				
			||||||
	else if (btn == Button1)
 | 
					 | 
				
			||||||
		mousesel(e, 1);
 | 
							mousesel(e, 1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1541,7 +1537,6 @@ void
 | 
				
			|||||||
xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
 | 
					xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Color drawcol;
 | 
						Color drawcol;
 | 
				
			||||||
	XRenderColor colbg;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* remove the old cursor */
 | 
						/* remove the old cursor */
 | 
				
			||||||
	if (selected(ox, oy))
 | 
						if (selected(ox, oy))
 | 
				
			||||||
@@ -1570,21 +1565,11 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og)
 | 
				
			|||||||
		if (selected(cx, cy)) {
 | 
							if (selected(cx, cy)) {
 | 
				
			||||||
			g.fg = defaultfg;
 | 
								g.fg = defaultfg;
 | 
				
			||||||
			g.bg = defaultrcs;
 | 
								g.bg = defaultrcs;
 | 
				
			||||||
		} else if (!(og.mode & ATTR_REVERSE)) {
 | 
					 | 
				
			||||||
			unsigned long col = g.bg;
 | 
					 | 
				
			||||||
			g.bg = g.fg;
 | 
					 | 
				
			||||||
			g.fg = col;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (IS_TRUECOL(g.bg)) {
 | 
					 | 
				
			||||||
			colbg.alpha = 0xffff;
 | 
					 | 
				
			||||||
			colbg.red = TRUERED(g.bg);
 | 
					 | 
				
			||||||
			colbg.green = TRUEGREEN(g.bg);
 | 
					 | 
				
			||||||
			colbg.blue = TRUEBLUE(g.bg);
 | 
					 | 
				
			||||||
			XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, &drawcol);
 | 
					 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			drawcol = dc.col[g.bg];
 | 
								g.fg = defaultbg;
 | 
				
			||||||
 | 
								g.bg = defaultcs;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							drawcol = dc.col[g.bg];
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* draw the new one */
 | 
						/* draw the new one */
 | 
				
			||||||
@@ -1943,9 +1928,6 @@ resize(XEvent *e)
 | 
				
			|||||||
	cresize(e->xconfigure.width, e->xconfigure.height);
 | 
						cresize(e->xconfigure.width, e->xconfigure.height);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int tinsync(uint);
 | 
					 | 
				
			||||||
int ttyread_pending();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void
 | 
					void
 | 
				
			||||||
run(void)
 | 
					run(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -1980,7 +1962,7 @@ run(void)
 | 
				
			|||||||
		FD_SET(ttyfd, &rfd);
 | 
							FD_SET(ttyfd, &rfd);
 | 
				
			||||||
		FD_SET(xfd, &rfd);
 | 
							FD_SET(xfd, &rfd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (XPending(xw.dpy) || ttyread_pending())
 | 
							if (XPending(xw.dpy))
 | 
				
			||||||
			timeout = 0;  /* existing events might not set xfd */
 | 
								timeout = 0;  /* existing events might not set xfd */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		seltv.tv_sec = timeout / 1E3;
 | 
							seltv.tv_sec = timeout / 1E3;
 | 
				
			||||||
@@ -1994,8 +1976,7 @@ run(void)
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
		clock_gettime(CLOCK_MONOTONIC, &now);
 | 
							clock_gettime(CLOCK_MONOTONIC, &now);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		int ttyin = FD_ISSET(ttyfd, &rfd) || ttyread_pending();
 | 
							if (FD_ISSET(ttyfd, &rfd))
 | 
				
			||||||
		if (ttyin)
 | 
					 | 
				
			||||||
			ttyread();
 | 
								ttyread();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		xev = 0;
 | 
							xev = 0;
 | 
				
			||||||
@@ -2019,7 +2000,7 @@ run(void)
 | 
				
			|||||||
		 * maximum latency intervals during `cat huge.txt`, and perfect
 | 
							 * maximum latency intervals during `cat huge.txt`, and perfect
 | 
				
			||||||
		 * sync with periodic updates from animations/key-repeats/etc.
 | 
							 * sync with periodic updates from animations/key-repeats/etc.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		if (ttyin || xev) {
 | 
							if (FD_ISSET(ttyfd, &rfd) || xev) {
 | 
				
			||||||
			if (!drawing) {
 | 
								if (!drawing) {
 | 
				
			||||||
				trigger = now;
 | 
									trigger = now;
 | 
				
			||||||
				drawing = 1;
 | 
									drawing = 1;
 | 
				
			||||||
@@ -2030,18 +2011,6 @@ run(void)
 | 
				
			|||||||
				continue;  /* we have time, try to find idle */
 | 
									continue;  /* we have time, try to find idle */
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (tinsync(su_timeout)) {
 | 
					 | 
				
			||||||
			/*
 | 
					 | 
				
			||||||
			 * on synchronized-update draw-suspension: don't reset
 | 
					 | 
				
			||||||
			 * drawing so that we draw ASAP once we can (just after
 | 
					 | 
				
			||||||
			 * ESU). it won't be too soon because we already can
 | 
					 | 
				
			||||||
			 * draw now but we skip. we set timeout > 0 to draw on
 | 
					 | 
				
			||||||
			 * SU-timeout even without new content.
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			timeout = minlatency;
 | 
					 | 
				
			||||||
			continue;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		/* idle detected or maxlatency exhausted -> draw */
 | 
							/* idle detected or maxlatency exhausted -> draw */
 | 
				
			||||||
		timeout = -1;
 | 
							timeout = -1;
 | 
				
			||||||
		if (blinktimeout && tattrset(ATTR_BLINK)) {
 | 
							if (blinktimeout && tattrset(ATTR_BLINK)) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user