| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -359,7 +359,7 @@ static void csidump(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void csihandle(void); | 
																 | 
																 | 
																static void csihandle(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void csiparse(void); | 
																 | 
																 | 
																static void csiparse(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void csireset(void); | 
																 | 
																 | 
																static void csireset(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static int eschandle(uchar ascii); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int eschandle(uchar); | 
															
														
														
													
														
															
																 | 
																 | 
																static void strdump(void); | 
																 | 
																 | 
																static void strdump(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void strhandle(void); | 
																 | 
																 | 
																static void strhandle(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void strparse(void); | 
																 | 
																 | 
																static void strparse(void); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -406,8 +406,9 @@ static void ttyread(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void ttyresize(void); | 
																 | 
																 | 
																static void ttyresize(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void ttysend(char *, size_t); | 
																 | 
																 | 
																static void ttysend(char *, size_t); | 
															
														
														
													
														
															
																 | 
																 | 
																static void ttywrite(const char *, size_t); | 
																 | 
																 | 
																static void ttywrite(const char *, size_t); | 
															
														
														
													
														
															
																 | 
																 | 
																static void tstrsequence(uchar c); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static void tstrsequence(uchar); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static inline ushort sixd_to_16bit(int); | 
															
														
														
													
														
															
																 | 
																 | 
																static void xdraws(char *, Glyph, int, int, int, int); | 
																 | 
																 | 
																static void xdraws(char *, Glyph, int, int, int, int); | 
															
														
														
													
														
															
																 | 
																 | 
																static void xhints(void); | 
																 | 
																 | 
																static void xhints(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void xclear(int, int, int, int); | 
																 | 
																 | 
																static void xclear(int, int, int, int); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -418,7 +419,6 @@ static int xsetcolorname(int, const char *); | 
															
														
														
													
														
															
																 | 
																 | 
																static int xgeommasktogravity(int); | 
																 | 
																 | 
																static int xgeommasktogravity(int); | 
															
														
														
													
														
															
																 | 
																 | 
																static int xloadfont(Font *, FcPattern *); | 
																 | 
																 | 
																static int xloadfont(Font *, FcPattern *); | 
															
														
														
													
														
															
																 | 
																 | 
																static void xloadfonts(char *, double); | 
																 | 
																 | 
																static void xloadfonts(char *, double); | 
															
														
														
													
														
															
																 | 
																 | 
																static int xloadfontset(Font *); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																static void xsettitle(char *); | 
																 | 
																 | 
																static void xsettitle(char *); | 
															
														
														
													
														
															
																 | 
																 | 
																static void xresettitle(void); | 
																 | 
																 | 
																static void xresettitle(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void xsetpointermotion(int); | 
																 | 
																 | 
																static void xsetpointermotion(int); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -452,6 +452,8 @@ static char *getsel(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void selcopy(void); | 
																 | 
																 | 
																static void selcopy(void); | 
															
														
														
													
														
															
																 | 
																 | 
																static void selscroll(int, int); | 
																 | 
																 | 
																static void selscroll(int, int); | 
															
														
														
													
														
															
																 | 
																 | 
																static void selsnap(int, int *, int *, int); | 
																 | 
																 | 
																static void selsnap(int, int *, int *, int); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int x2col(int); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																static int y2row(int); | 
															
														
														
													
														
															
																 | 
																 | 
																static void getbuttoninfo(XEvent *); | 
																 | 
																 | 
																static void getbuttoninfo(XEvent *); | 
															
														
														
													
														
															
																 | 
																 | 
																static void mousereport(XEvent *); | 
																 | 
																 | 
																static void mousereport(XEvent *); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -640,7 +642,7 @@ utf8validate(long *u, size_t i) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return i; | 
																 | 
																 | 
																	return i; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static void | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																selinit(void) { | 
																 | 
																 | 
																selinit(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	memset(&sel.tclick1, 0, sizeof(sel.tclick1)); | 
																 | 
																 | 
																	memset(&sel.tclick1, 0, sizeof(sel.tclick1)); | 
															
														
														
													
														
															
																 | 
																 | 
																	memset(&sel.tclick2, 0, sizeof(sel.tclick2)); | 
																 | 
																 | 
																	memset(&sel.tclick2, 0, sizeof(sel.tclick2)); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -653,7 +655,7 @@ selinit(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																		sel.xtarget = XA_STRING; | 
																 | 
																 | 
																		sel.xtarget = XA_STRING; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static int | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																int | 
															
														
														
													
														
															
																 | 
																 | 
																x2col(int x) { | 
																 | 
																 | 
																x2col(int x) { | 
															
														
														
													
														
															
																 | 
																 | 
																	x -= borderpx; | 
																 | 
																 | 
																	x -= borderpx; | 
															
														
														
													
														
															
																 | 
																 | 
																	x /= xw.cw; | 
																 | 
																 | 
																	x /= xw.cw; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -661,7 +663,7 @@ x2col(int x) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return LIMIT(x, 0, term.col-1); | 
																 | 
																 | 
																	return LIMIT(x, 0, term.col-1); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static int | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																int | 
															
														
														
													
														
															
																 | 
																 | 
																y2row(int y) { | 
																 | 
																 | 
																y2row(int y) { | 
															
														
														
													
														
															
																 | 
																 | 
																	y -= borderpx; | 
																 | 
																 | 
																	y -= borderpx; | 
															
														
														
													
														
															
																 | 
																 | 
																	y /= xw.ch; | 
																 | 
																 | 
																	y /= xw.ch; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -669,7 +671,7 @@ y2row(int y) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return LIMIT(y, 0, term.row-1); | 
																 | 
																 | 
																	return LIMIT(y, 0, term.row-1); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static int tlinelen(int y) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																int tlinelen(int y) { | 
															
														
														
													
														
															
																 | 
																 | 
																	int i = term.col; | 
																 | 
																 | 
																	int i = term.col; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(term.line[y][i - 1].mode & ATTR_WRAP) | 
																 | 
																 | 
																	if(term.line[y][i - 1].mode & ATTR_WRAP) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -681,7 +683,7 @@ static int tlinelen(int y) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return i; | 
																 | 
																 | 
																	return i; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static void | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																selnormalize(void) { | 
																 | 
																 | 
																selnormalize(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																	int i; | 
																 | 
																 | 
																	int i; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -708,7 +710,7 @@ selnormalize(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																		sel.ne.x = term.col - 1; | 
																 | 
																 | 
																		sel.ne.x = term.col - 1; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static inline bool | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																bool | 
															
														
														
													
														
															
																 | 
																 | 
																selected(int x, int y) { | 
																 | 
																 | 
																selected(int x, int y) { | 
															
														
														
													
														
															
																 | 
																 | 
																	if(sel.type == SEL_RECTANGULAR) | 
																 | 
																 | 
																	if(sel.type == SEL_RECTANGULAR) | 
															
														
														
													
														
															
																 | 
																 | 
																		return BETWEEN(y, sel.nb.y, sel.ne.y) | 
																 | 
																 | 
																		return BETWEEN(y, sel.nb.y, sel.ne.y) | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -2857,7 +2859,7 @@ xresize(int col, int row) { | 
															
														
														
													
														
															
																 | 
																 | 
																	xclear(0, 0, xw.w, xw.h); | 
																 | 
																 | 
																	xclear(0, 0, xw.w, xw.h); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static inline ushort | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																ushort | 
															
														
														
													
														
															
																 | 
																 | 
																sixd_to_16bit(int x) { | 
																 | 
																 | 
																sixd_to_16bit(int x) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return x == 0 ? 0 : 0x3737 + 0x2828 * x; | 
																 | 
																 | 
																	return x == 0 ? 0 : 0x3737 + 0x2828 * x; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -3113,15 +3115,6 @@ xloadfonts(char *fontstr, double fontsize) { | 
															
														
														
													
														
															
																 | 
																 | 
																	FcPatternDestroy(pattern); | 
																 | 
																 | 
																	FcPatternDestroy(pattern); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																int | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																xloadfontset(Font *f) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	FcResult result; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	if(!(f->set = FcFontSort(0, f->pattern, FcTrue, 0, &result))) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		return 1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	return 0; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																xunloadfont(Font *f) { | 
																 | 
																 | 
																xunloadfont(Font *f) { | 
															
														
														
													
														
															
																 | 
																 | 
																	XftFontClose(xw.dpy, f->match); | 
																 | 
																 | 
																	XftFontClose(xw.dpy, f->match); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -3469,7 +3462,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { | 
															
														
														
													
														
															
																 | 
																 | 
																		/* Nothing was found. */ | 
																 | 
																 | 
																		/* Nothing was found. */ | 
															
														
														
													
														
															
																 | 
																 | 
																		if(i >= frclen) { | 
																 | 
																 | 
																		if(i >= frclen) { | 
															
														
														
													
														
															
																 | 
																 | 
																			if(!font->set) | 
																 | 
																 | 
																			if(!font->set) | 
															
														
														
													
														
															
																 | 
																 | 
																				xloadfontset(font); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				font->set = FcFontSort(0, font->pattern, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																				                       FcTrue, 0, &fcres); | 
															
														
														
													
														
															
																 | 
																 | 
																			fcsets[0] = font->set; | 
																 | 
																 | 
																			fcsets[0] = font->set; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																			/* | 
																 | 
																 | 
																			/* | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -3597,15 +3591,15 @@ xdrawcursor(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																			case 4: /* Steady Underline */ | 
																 | 
																 | 
																			case 4: /* Steady Underline */ | 
															
														
														
													
														
															
																 | 
																 | 
																				XftDrawRect(xw.draw, &dc.col[defaultcs], | 
																 | 
																 | 
																				XftDrawRect(xw.draw, &dc.col[defaultcs], | 
															
														
														
													
														
															
																 | 
																 | 
																						borderpx + curx * xw.cw, | 
																 | 
																 | 
																						borderpx + curx * xw.cw, | 
															
														
														
													
														
															
																 | 
																 | 
																						borderpx + (term.c.y + 1) * xw.ch - 1, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																						xw.cw, 1); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						borderpx + (term.c.y + 1) * xw.ch - cursorthickness, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						xw.cw, cursorthickness); | 
															
														
														
													
														
															
																 | 
																 | 
																				break; | 
																 | 
																 | 
																				break; | 
															
														
														
													
														
															
																 | 
																 | 
																			case 5: /* Blinking bar */ | 
																 | 
																 | 
																			case 5: /* Blinking bar */ | 
															
														
														
													
														
															
																 | 
																 | 
																			case 6: /* Steady bar */ | 
																 | 
																 | 
																			case 6: /* Steady bar */ | 
															
														
														
													
														
															
																 | 
																 | 
																				XftDrawRect(xw.draw, &dc.col[defaultcs], | 
																 | 
																 | 
																				XftDrawRect(xw.draw, &dc.col[defaultcs], | 
															
														
														
													
														
															
																 | 
																 | 
																								borderpx + curx * xw.cw, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																								borderpx + term.c.y * xw.ch, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																								1, xw.ch); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						borderpx + curx * xw.cw, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						borderpx + term.c.y * xw.ch, | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																						cursorthickness, xw.ch); | 
															
														
														
													
														
															
																 | 
																 | 
																				break; | 
																 | 
																 | 
																				break; | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																	} else { | 
																 | 
																 | 
																	} else { | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -3772,7 +3766,7 @@ focus(XEvent *ev) { | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																static inline bool | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																bool | 
															
														
														
													
														
															
																 | 
																 | 
																match(uint mask, uint state) { | 
																 | 
																 | 
																match(uint mask, uint state) { | 
															
														
														
													
														
															
																 | 
																 | 
																	return mask == XK_ANY_MOD || mask == (state & ~ignoremod); | 
																 | 
																 | 
																	return mask == XK_ANY_MOD || mask == (state & ~ignoremod); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -4078,7 +4072,7 @@ main(int argc, char *argv[]) { | 
															
														
														
													
														
															
																 | 
																 | 
																run: | 
																 | 
																 | 
																run: | 
															
														
														
													
														
															
																 | 
																 | 
																	setlocale(LC_CTYPE, ""); | 
																 | 
																 | 
																	setlocale(LC_CTYPE, ""); | 
															
														
														
													
														
															
																 | 
																 | 
																	XSetLocaleModifiers(""); | 
																 | 
																 | 
																	XSetLocaleModifiers(""); | 
															
														
														
													
														
															
																 | 
																 | 
																	tnew(cols? cols : 1, rows? rows : 1); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	tnew(MAX(cols, 1), MAX(rows, 1)); | 
															
														
														
													
														
															
																 | 
																 | 
																	xinit(); | 
																 | 
																 | 
																	xinit(); | 
															
														
														
													
														
															
																 | 
																 | 
																	selinit(); | 
																 | 
																 | 
																	selinit(); | 
															
														
														
													
														
															
																 | 
																 | 
																	run(); | 
																 | 
																 | 
																	run(); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |