update st and dmenu overlay
Signed-off-by: Amneesh Singh <natto@weirdnatto.in>
This commit is contained in:
		@@ -1,9 +1,10 @@
 | 
				
			|||||||
final: prev: {
 | 
					final: prev: {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  dmenu = prev.dmenu.overrideAttrs (oldAttrs: rec {
 | 
					  dmenu = prev.dmenu.overrideAttrs (oldAttrs: rec {
 | 
				
			||||||
 | 
					    version = "5.2";
 | 
				
			||||||
    src = builtins.fetchTarball {
 | 
					    src = builtins.fetchTarball {
 | 
				
			||||||
      url = "https://dl.suckless.org/tools/dmenu-5.1.tar.gz";
 | 
					      url = "https://dl.suckless.org/tools/dmenu-${version}.tar.gz";
 | 
				
			||||||
      sha256 = "1zwl0qlc4mmr973km03lmnfxjibdh2inwzb0vr6pvrfhrm0glvrk";
 | 
					      sha256 = "1rxxc3qdb5qvwg284f0hximg9953fnvlymxwmi1zlqkqbs8qbizk";
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    patches = [ ./patches/dmenu.patch ];
 | 
					    patches = [ ./patches/dmenu.patch ];
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
@@ -17,9 +18,10 @@ final: prev: {
 | 
				
			|||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  st = prev.st.overrideAttrs (oldAttrs: rec {
 | 
					  st = prev.st.overrideAttrs (oldAttrs: rec {
 | 
				
			||||||
 | 
					    version = "0.9";
 | 
				
			||||||
    src = builtins.fetchTarball {
 | 
					    src = builtins.fetchTarball {
 | 
				
			||||||
      url = "https://dl.suckless.org/st/st-0.8.5.tar.gz";
 | 
					      url = "https://dl.suckless.org/st/st-${version}.tar.gz";
 | 
				
			||||||
      sha256 = "0iy7sj40m5x7wr4qkicijckk3cb0h9815mzacfjb3xrlrvpx6hm5";
 | 
					      sha256 = "1bdhh5lnhiz7q4ihig1f5q0ay5glsqxhpxpnsfqxwffqqwmy1vlh";
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    patches = [ ./patches/st.patch ];
 | 
					    patches = [ ./patches/st.patch ];
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
diff --color -u a/config.def.h b/config.def.h
 | 
					diff --color -ru dmenu-5.2/config.def.h dmenu-5.2-a/config.def.h
 | 
				
			||||||
--- a/config.def.h	2020-09-02 22:07:07.000000000 +0530
 | 
					--- dmenu-5.2/config.def.h	2022-10-04 23:06:58.000000000 +0530
 | 
				
			||||||
+++ b/config.def.h	2021-05-21 00:20:28.562140000 +0530
 | 
					+++ dmenu-5.2-a/config.def.h	2022-11-25 02:20:05.393693557 +0530
 | 
				
			||||||
@@ -2,16 +2,21 @@
 | 
					@@ -2,16 +2,21 @@
 | 
				
			||||||
 /* Default settings; can be overriden by command line. */
 | 
					 /* Default settings; can be overriden by command line. */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -32,10 +32,10 @@ diff --color -u a/config.def.h b/config.def.h
 | 
				
			|||||||
 static const char worddelimiters[] = " ";
 | 
					 static const char worddelimiters[] = " ";
 | 
				
			||||||
+/* Size of the window border */
 | 
					+/* Size of the window border */
 | 
				
			||||||
+static const unsigned int border_width = 4;
 | 
					+static const unsigned int border_width = 4;
 | 
				
			||||||
Only in b: config.def.h.orig
 | 
					Only in dmenu-5.2-a: config.h
 | 
				
			||||||
diff --color -u a/dmenu.1 b/dmenu.1
 | 
					diff --color -ru dmenu-5.2/dmenu.1 dmenu-5.2-a/dmenu.1
 | 
				
			||||||
--- a/dmenu.1	2020-09-02 22:07:07.000000000 +0530
 | 
					--- dmenu-5.2/dmenu.1	2022-10-04 23:06:58.000000000 +0530
 | 
				
			||||||
+++ b/dmenu.1	2020-12-29 02:11:41.804718200 +0530
 | 
					+++ dmenu-5.2-a/dmenu.1	2022-11-25 02:20:05.393693557 +0530
 | 
				
			||||||
@@ -40,6 +40,9 @@
 | 
					@@ -40,6 +40,9 @@
 | 
				
			||||||
 .B \-b
 | 
					 .B \-b
 | 
				
			||||||
 dmenu appears at the bottom of the screen.
 | 
					 dmenu appears at the bottom of the screen.
 | 
				
			||||||
@@ -46,9 +46,9 @@ diff --color -u a/dmenu.1 b/dmenu.1
 | 
				
			|||||||
 .B \-f
 | 
					 .B \-f
 | 
				
			||||||
 dmenu grabs the keyboard before reading stdin if not reading from a tty. This
 | 
					 dmenu grabs the keyboard before reading stdin if not reading from a tty. This
 | 
				
			||||||
 is faster, but will lock up X until stdin reaches end\-of\-file.
 | 
					 is faster, but will lock up X until stdin reaches end\-of\-file.
 | 
				
			||||||
diff --color -u a/dmenu.c b/dmenu.c
 | 
					diff --color -ru dmenu-5.2/dmenu.c dmenu-5.2-a/dmenu.c
 | 
				
			||||||
--- a/dmenu.c	2020-09-02 22:07:07.000000000 +0530
 | 
					--- dmenu-5.2/dmenu.c	2022-10-04 23:06:58.000000000 +0530
 | 
				
			||||||
+++ b/dmenu.c	2020-12-29 02:24:03.168766600 +0530
 | 
					+++ dmenu-5.2-a/dmenu.c	2022-11-25 02:22:42.610351072 +0530
 | 
				
			||||||
@@ -26,8 +26,7 @@
 | 
					@@ -26,8 +26,7 @@
 | 
				
			||||||
 #define TEXTW(X)              (drw_fontset_getwidth(drw, (X)) + lrpad)
 | 
					 #define TEXTW(X)              (drw_fontset_getwidth(drw, (X)) + lrpad)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -59,7 +59,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 struct item {
 | 
					 struct item {
 | 
				
			||||||
 	char *text;
 | 
					 	char *text;
 | 
				
			||||||
 	struct item *left, *right;
 | 
					 	struct item *left, *right;
 | 
				
			||||||
@@ -89,6 +88,15 @@
 | 
					@@ -96,6 +95,15 @@
 | 
				
			||||||
 			break;
 | 
					 			break;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -75,7 +75,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 static void
 | 
					 static void
 | 
				
			||||||
 cleanup(void)
 | 
					 cleanup(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -113,6 +121,43 @@
 | 
					@@ -130,6 +138,43 @@
 | 
				
			||||||
 	return NULL;
 | 
					 	return NULL;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -119,7 +119,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 static int
 | 
					 static int
 | 
				
			||||||
 drawitem(struct item *item, int x, int y, int w)
 | 
					 drawitem(struct item *item, int x, int y, int w)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -123,7 +168,9 @@
 | 
					@@ -140,7 +185,9 @@
 | 
				
			||||||
 	else
 | 
					 	else
 | 
				
			||||||
 		drw_setscheme(drw, scheme[SchemeNorm]);
 | 
					 		drw_setscheme(drw, scheme[SchemeNorm]);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -130,7 +130,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static void
 | 
					 static void
 | 
				
			||||||
@@ -501,6 +548,119 @@
 | 
					@@ -529,6 +576,119 @@
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static void
 | 
					 static void
 | 
				
			||||||
@@ -250,7 +250,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 paste(void)
 | 
					 paste(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	char *p, *q;
 | 
					 	char *p, *q;
 | 
				
			||||||
@@ -561,6 +721,9 @@
 | 
					@@ -582,6 +742,9 @@
 | 
				
			||||||
 				break;
 | 
					 				break;
 | 
				
			||||||
 			cleanup();
 | 
					 			cleanup();
 | 
				
			||||||
 			exit(1);
 | 
					 			exit(1);
 | 
				
			||||||
@@ -260,7 +260,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 		case Expose:
 | 
					 		case Expose:
 | 
				
			||||||
 			if (ev.xexpose.count == 0)
 | 
					 			if (ev.xexpose.count == 0)
 | 
				
			||||||
 				drw_map(drw, win, 0, 0, mw, mh);
 | 
					 				drw_map(drw, win, 0, 0, mw, mh);
 | 
				
			||||||
@@ -611,6 +774,7 @@
 | 
					@@ -632,6 +795,7 @@
 | 
				
			||||||
 	bh = drw->fonts->h + 2;
 | 
					 	bh = drw->fonts->h + 2;
 | 
				
			||||||
 	lines = MAX(lines, 0);
 | 
					 	lines = MAX(lines, 0);
 | 
				
			||||||
 	mh = (lines + 1) * bh;
 | 
					 	mh = (lines + 1) * bh;
 | 
				
			||||||
@@ -268,8 +268,8 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 #ifdef XINERAMA
 | 
					 #ifdef XINERAMA
 | 
				
			||||||
 	i = 0;
 | 
					 	i = 0;
 | 
				
			||||||
 	if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) {
 | 
					 	if (parentwin == root && (info = XineramaQueryScreens(dpy, &n))) {
 | 
				
			||||||
@@ -637,9 +801,16 @@
 | 
					@@ -658,9 +822,16 @@
 | 
				
			||||||
 				if (INTERSECT(x, y, 1, 1, info[i]))
 | 
					 				if (INTERSECT(x, y, 1, 1, info[i]) != 0)
 | 
				
			||||||
 					break;
 | 
					 					break;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
-		x = info[i].x_org;
 | 
					-		x = info[i].x_org;
 | 
				
			||||||
@@ -288,7 +288,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 		XFree(info);
 | 
					 		XFree(info);
 | 
				
			||||||
 	} else
 | 
					 	} else
 | 
				
			||||||
 #endif
 | 
					 #endif
 | 
				
			||||||
@@ -647,21 +818,30 @@
 | 
					@@ -668,21 +839,29 @@
 | 
				
			||||||
 		if (!XGetWindowAttributes(dpy, parentwin, &wa))
 | 
					 		if (!XGetWindowAttributes(dpy, parentwin, &wa))
 | 
				
			||||||
 			die("could not get embedding window attributes: 0x%lx",
 | 
					 			die("could not get embedding window attributes: 0x%lx",
 | 
				
			||||||
 			    parentwin);
 | 
					 			    parentwin);
 | 
				
			||||||
@@ -307,16 +307,16 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
+		}
 | 
					+		}
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
-	promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
 | 
					-	promptw = (prompt && *prompt) ? TEXTW(prompt) - lrpad / 4 : 0;
 | 
				
			||||||
 	inputw = MIN(inputw, mw/3);
 | 
					 	inputw = mw / 3; /* input width: ~33% of monitor width */
 | 
				
			||||||
 	match();
 | 
					 	match();
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	/* create menu window */
 | 
					 	/* create menu window */
 | 
				
			||||||
 	swa.override_redirect = True;
 | 
					 	swa.override_redirect = True;
 | 
				
			||||||
 	swa.background_pixel = scheme[SchemeNorm][ColBg].pixel;
 | 
					 	swa.background_pixel = scheme[SchemeNorm][ColBg].pixel;
 | 
				
			||||||
 | 
					-	swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
 | 
				
			||||||
 | 
					-	win = XCreateWindow(dpy, parentwin, x, y, mw, mh, 0,
 | 
				
			||||||
+	swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask |
 | 
					+	swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask |
 | 
				
			||||||
+	                 ButtonPressMask;
 | 
					+	                 ButtonPressMask;
 | 
				
			||||||
 	swa.event_mask = ExposureMask | KeyPressMask | VisibilityChangeMask;
 | 
					 | 
				
			||||||
-	win = XCreateWindow(dpy, parentwin, x, y, mw, mh, 0,
 | 
					 | 
				
			||||||
+	win = XCreateWindow(dpy, parentwin, x, y, mw, mh, border_width,
 | 
					+	win = XCreateWindow(dpy, parentwin, x, y, mw, mh, border_width,
 | 
				
			||||||
 	                    CopyFromParent, CopyFromParent, CopyFromParent,
 | 
					 	                    CopyFromParent, CopyFromParent, CopyFromParent,
 | 
				
			||||||
 	                    CWOverrideRedirect | CWBackPixel | CWEventMask, &swa);
 | 
					 	                    CWOverrideRedirect | CWBackPixel | CWEventMask, &swa);
 | 
				
			||||||
@@ -324,7 +324,7 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 	XSetClassHint(dpy, win, &ch);
 | 
					 	XSetClassHint(dpy, win, &ch);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -709,6 +889,8 @@
 | 
					@@ -729,6 +908,8 @@
 | 
				
			||||||
 			topbar = 0;
 | 
					 			topbar = 0;
 | 
				
			||||||
 		else if (!strcmp(argv[i], "-f"))   /* grabs keyboard before reading stdin */
 | 
					 		else if (!strcmp(argv[i], "-f"))   /* grabs keyboard before reading stdin */
 | 
				
			||||||
 			fast = 1;
 | 
					 			fast = 1;
 | 
				
			||||||
@@ -333,6 +333,3 @@ diff --color -u a/dmenu.c b/dmenu.c
 | 
				
			|||||||
 		else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */
 | 
					 		else if (!strcmp(argv[i], "-i")) { /* case-insensitive item matching */
 | 
				
			||||||
 			fstrncmp = strncasecmp;
 | 
					 			fstrncmp = strncasecmp;
 | 
				
			||||||
 			fstrstr = cistrstr;
 | 
					 			fstrstr = cistrstr;
 | 
				
			||||||
Only in b: dmenu.c.orig
 | 
					 | 
				
			||||||
Only in a: dmenu_path
 | 
					 | 
				
			||||||
Only in a: dmenu_run
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
diff --color -u b/config.def.h a/config.def.h
 | 
					diff --color -ru st-0.9/config.def.h st-0.9-a/config.def.h
 | 
				
			||||||
--- b/config.def.h	2022-03-18 10:26:17.487413585 +0530
 | 
					--- st-0.9/config.def.h	2022-10-04 23:11:26.000000000 +0530
 | 
				
			||||||
+++ a/config.def.h	2022-03-18 11:11:09.497847262 +0530
 | 
					+++ st-0.9-a/config.def.h	2022-11-25 02:12:19.384259019 +0530
 | 
				
			||||||
@@ -3,9 +3,10 @@
 | 
					@@ -3,9 +3,10 @@
 | 
				
			||||||
 /*
 | 
					 /*
 | 
				
			||||||
  * appearance
 | 
					  * appearance
 | 
				
			||||||
@@ -148,9 +148,9 @@ diff --color -u b/config.def.h a/config.def.h
 | 
				
			|||||||
 };
 | 
					 };
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 /*
 | 
					 /*
 | 
				
			||||||
diff --color -u b/st.c a/st.c
 | 
					diff --color -ru st-0.9/st.c st-0.9-a/st.c
 | 
				
			||||||
--- b/st.c	2022-03-18 10:26:17.488413654 +0530
 | 
					--- st-0.9/st.c	2022-10-04 23:11:26.000000000 +0530
 | 
				
			||||||
+++ a/st.c	2022-03-18 10:59:06.308482438 +0530
 | 
					+++ st-0.9-a/st.c	2022-11-25 02:12:19.384259019 +0530
 | 
				
			||||||
@@ -35,6 +35,7 @@
 | 
					@@ -35,6 +35,7 @@
 | 
				
			||||||
 #define ESC_ARG_SIZ   16
 | 
					 #define ESC_ARG_SIZ   16
 | 
				
			||||||
 #define STR_BUF_SIZ   ESC_BUF_SIZ
 | 
					 #define STR_BUF_SIZ   ESC_BUF_SIZ
 | 
				
			||||||
@@ -179,7 +179,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	int *dirty;   /* dirtyness of lines */
 | 
					 	int *dirty;   /* dirtyness of lines */
 | 
				
			||||||
 	TCursor c;    /* cursor */
 | 
					 	TCursor c;    /* cursor */
 | 
				
			||||||
 	int ocx;      /* old cursor col */
 | 
					 	int ocx;      /* old cursor col */
 | 
				
			||||||
@@ -184,8 +191,8 @@
 | 
					@@ -185,8 +192,8 @@
 | 
				
			||||||
 static void tputtab(int);
 | 
					 static void tputtab(int);
 | 
				
			||||||
 static void tputc(Rune);
 | 
					 static void tputc(Rune);
 | 
				
			||||||
 static void treset(void);
 | 
					 static void treset(void);
 | 
				
			||||||
@@ -190,7 +190,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 static void tsetattr(const int *, int);
 | 
					 static void tsetattr(const int *, int);
 | 
				
			||||||
 static void tsetchar(Rune, const Glyph *, int, int);
 | 
					 static void tsetchar(Rune, const Glyph *, int, int);
 | 
				
			||||||
 static void tsetdirt(int, int);
 | 
					 static void tsetdirt(int, int);
 | 
				
			||||||
@@ -416,10 +423,10 @@
 | 
					@@ -409,10 +416,10 @@
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	int i = term.col;
 | 
					 	int i = term.col;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -203,7 +203,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 		--i;
 | 
					 		--i;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	return i;
 | 
					 	return i;
 | 
				
			||||||
@@ -528,7 +535,7 @@
 | 
					@@ -521,7 +528,7 @@
 | 
				
			||||||
 		 * Snap around if the word wraps around at the end or
 | 
					 		 * Snap around if the word wraps around at the end or
 | 
				
			||||||
 		 * beginning of a line.
 | 
					 		 * beginning of a line.
 | 
				
			||||||
 		 */
 | 
					 		 */
 | 
				
			||||||
@@ -212,7 +212,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 		prevdelim = ISDELIM(prevgp->u);
 | 
					 		prevdelim = ISDELIM(prevgp->u);
 | 
				
			||||||
 		for (;;) {
 | 
					 		for (;;) {
 | 
				
			||||||
 			newx = *x + direction;
 | 
					 			newx = *x + direction;
 | 
				
			||||||
@@ -543,14 +550,14 @@
 | 
					@@ -536,14 +543,14 @@
 | 
				
			||||||
 					yt = *y, xt = *x;
 | 
					 					yt = *y, xt = *x;
 | 
				
			||||||
 				else
 | 
					 				else
 | 
				
			||||||
 					yt = newy, xt = newx;
 | 
					 					yt = newy, xt = newx;
 | 
				
			||||||
@@ -229,7 +229,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 			delim = ISDELIM(gp->u);
 | 
					 			delim = ISDELIM(gp->u);
 | 
				
			||||||
 			if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim
 | 
					 			if (!(gp->mode & ATTR_WDUMMY) && (delim != prevdelim
 | 
				
			||||||
 					|| (delim && gp->u != prevgp->u)))
 | 
					 					|| (delim && gp->u != prevgp->u)))
 | 
				
			||||||
@@ -571,14 +578,14 @@
 | 
					@@ -564,14 +571,14 @@
 | 
				
			||||||
 		*x = (direction < 0) ? 0 : term.col - 1;
 | 
					 		*x = (direction < 0) ? 0 : term.col - 1;
 | 
				
			||||||
 		if (direction < 0) {
 | 
					 		if (direction < 0) {
 | 
				
			||||||
 			for (; *y > 0; *y += direction) {
 | 
					 			for (; *y > 0; *y += direction) {
 | 
				
			||||||
@@ -246,7 +246,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 						& ATTR_WRAP)) {
 | 
					 						& ATTR_WRAP)) {
 | 
				
			||||||
 					break;
 | 
					 					break;
 | 
				
			||||||
 				}
 | 
					 				}
 | 
				
			||||||
@@ -609,13 +616,13 @@
 | 
					@@ -602,13 +609,13 @@
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 		if (sel.type == SEL_RECTANGULAR) {
 | 
					 		if (sel.type == SEL_RECTANGULAR) {
 | 
				
			||||||
@@ -263,7 +263,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 		while (last >= gp && last->u == ' ')
 | 
					 		while (last >= gp && last->u == ' ')
 | 
				
			||||||
 			--last;
 | 
					 			--last;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -851,6 +858,9 @@
 | 
					@@ -844,6 +851,9 @@
 | 
				
			||||||
 ttywrite(const char *s, size_t n, int may_echo)
 | 
					 ttywrite(const char *s, size_t n, int may_echo)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	const char *next;
 | 
					 	const char *next;
 | 
				
			||||||
@@ -273,7 +273,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (may_echo && IS_SET(MODE_ECHO))
 | 
					 	if (may_echo && IS_SET(MODE_ECHO))
 | 
				
			||||||
 		twrite(s, n, 1);
 | 
					 		twrite(s, n, 1);
 | 
				
			||||||
@@ -1062,13 +1072,53 @@
 | 
					@@ -1055,13 +1065,53 @@
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 void
 | 
					 void
 | 
				
			||||||
@@ -328,7 +328,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	tsetdirt(orig, term.bot-n);
 | 
					 	tsetdirt(orig, term.bot-n);
 | 
				
			||||||
 	tclearregion(0, term.bot-n+1, term.col-1, term.bot);
 | 
					 	tclearregion(0, term.bot-n+1, term.col-1, term.bot);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1078,17 +1128,28 @@
 | 
					@@ -1071,17 +1121,28 @@
 | 
				
			||||||
 		term.line[i-n] = temp;
 | 
					 		term.line[i-n] = temp;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -359,7 +359,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	tclearregion(0, orig, term.col-1, orig+n-1);
 | 
					 	tclearregion(0, orig, term.col-1, orig+n-1);
 | 
				
			||||||
 	tsetdirt(orig+n, term.bot);
 | 
					 	tsetdirt(orig+n, term.bot);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -1098,7 +1159,8 @@
 | 
					@@ -1091,7 +1152,8 @@
 | 
				
			||||||
 		term.line[i+n] = temp;
 | 
					 		term.line[i+n] = temp;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -369,7 +369,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 void
 | 
					 void
 | 
				
			||||||
@@ -1127,7 +1189,7 @@
 | 
					@@ -1120,7 +1182,7 @@
 | 
				
			||||||
 	int y = term.c.y;
 | 
					 	int y = term.c.y;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	if (y == term.bot) {
 | 
					 	if (y == term.bot) {
 | 
				
			||||||
@@ -378,7 +378,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	} else {
 | 
					 	} else {
 | 
				
			||||||
 		y++;
 | 
					 		y++;
 | 
				
			||||||
 	}
 | 
					 	}
 | 
				
			||||||
@@ -1292,14 +1354,14 @@
 | 
					@@ -1285,14 +1347,14 @@
 | 
				
			||||||
 tinsertblankline(int n)
 | 
					 tinsertblankline(int n)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 	if (BETWEEN(term.c.y, term.top, term.bot))
 | 
					 	if (BETWEEN(term.c.y, term.top, term.bot))
 | 
				
			||||||
@@ -395,7 +395,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 int32_t
 | 
					 int32_t
 | 
				
			||||||
@@ -1736,11 +1798,11 @@
 | 
					@@ -1729,11 +1791,11 @@
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	case 'S': /* SU -- Scroll <n> line up */
 | 
					 	case 'S': /* SU -- Scroll <n> line up */
 | 
				
			||||||
 		DEFAULT(csiescseq.arg[0], 1);
 | 
					 		DEFAULT(csiescseq.arg[0], 1);
 | 
				
			||||||
@@ -409,7 +409,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	case 'L': /* IL -- Insert <n> blank lines */
 | 
					 	case 'L': /* IL -- Insert <n> blank lines */
 | 
				
			||||||
 		DEFAULT(csiescseq.arg[0], 1);
 | 
					 		DEFAULT(csiescseq.arg[0], 1);
 | 
				
			||||||
@@ -2330,7 +2392,7 @@
 | 
					@@ -2296,7 +2358,7 @@
 | 
				
			||||||
 		return 0;
 | 
					 		return 0;
 | 
				
			||||||
 	case 'D': /* IND -- Linefeed */
 | 
					 	case 'D': /* IND -- Linefeed */
 | 
				
			||||||
 		if (term.c.y == term.bot) {
 | 
					 		if (term.c.y == term.bot) {
 | 
				
			||||||
@@ -418,7 +418,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 		} else {
 | 
					 		} else {
 | 
				
			||||||
 			tmoveto(term.c.x, term.c.y+1);
 | 
					 			tmoveto(term.c.x, term.c.y+1);
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
@@ -2343,7 +2405,7 @@
 | 
					@@ -2309,7 +2371,7 @@
 | 
				
			||||||
 		break;
 | 
					 		break;
 | 
				
			||||||
 	case 'M': /* RI -- Reverse index */
 | 
					 	case 'M': /* RI -- Reverse index */
 | 
				
			||||||
 		if (term.c.y == term.top) {
 | 
					 		if (term.c.y == term.top) {
 | 
				
			||||||
@@ -427,7 +427,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 		} else {
 | 
					 		} else {
 | 
				
			||||||
 			tmoveto(term.c.x, term.c.y-1);
 | 
					 			tmoveto(term.c.x, term.c.y-1);
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
@@ -2557,7 +2619,7 @@
 | 
					@@ -2523,7 +2585,7 @@
 | 
				
			||||||
 void
 | 
					 void
 | 
				
			||||||
 tresize(int col, int row)
 | 
					 tresize(int col, int row)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -436,7 +436,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	int minrow = MIN(row, term.row);
 | 
					 	int minrow = MIN(row, term.row);
 | 
				
			||||||
 	int mincol = MIN(col, term.col);
 | 
					 	int mincol = MIN(col, term.col);
 | 
				
			||||||
 	int *bp;
 | 
					 	int *bp;
 | 
				
			||||||
@@ -2594,6 +2656,14 @@
 | 
					@@ -2560,6 +2622,14 @@
 | 
				
			||||||
 	term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty));
 | 
					 	term.dirty = xrealloc(term.dirty, row * sizeof(*term.dirty));
 | 
				
			||||||
 	term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs));
 | 
					 	term.tabs = xrealloc(term.tabs, col * sizeof(*term.tabs));
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -451,7 +451,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	/* resize each row to new width, zero-pad if needed */
 | 
					 	/* resize each row to new width, zero-pad if needed */
 | 
				
			||||||
 	for (i = 0; i < minrow; i++) {
 | 
					 	for (i = 0; i < minrow; i++) {
 | 
				
			||||||
 		term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph));
 | 
					 		term.line[i] = xrealloc(term.line[i], col * sizeof(Glyph));
 | 
				
			||||||
@@ -2652,7 +2722,7 @@
 | 
					@@ -2618,7 +2688,7 @@
 | 
				
			||||||
 			continue;
 | 
					 			continue;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 		term.dirty[y] = 0;
 | 
					 		term.dirty[y] = 0;
 | 
				
			||||||
@@ -460,7 +460,7 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	}
 | 
					 	}
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -2673,8 +2743,9 @@
 | 
					@@ -2639,8 +2709,9 @@
 | 
				
			||||||
 		cx--;
 | 
					 		cx--;
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	drawregion(0, 0, term.col, term.row);
 | 
					 	drawregion(0, 0, term.col, term.row);
 | 
				
			||||||
@@ -472,9 +472,9 @@ diff --color -u b/st.c a/st.c
 | 
				
			|||||||
 	term.ocx = cx;
 | 
					 	term.ocx = cx;
 | 
				
			||||||
 	term.ocy = term.c.y;
 | 
					 	term.ocy = term.c.y;
 | 
				
			||||||
 	xfinishdraw();
 | 
					 	xfinishdraw();
 | 
				
			||||||
diff --color -u b/st.h a/st.h
 | 
					diff --color -ru st-0.9/st.h st-0.9-a/st.h
 | 
				
			||||||
--- b/st.h	2022-03-18 10:26:17.488413654 +0530
 | 
					--- st-0.9/st.h	2022-10-04 23:11:26.000000000 +0530
 | 
				
			||||||
+++ a/st.h	2022-03-18 11:04:56.429522959 +0530
 | 
					+++ st-0.9-a/st.h	2022-11-25 02:12:19.385259029 +0530
 | 
				
			||||||
@@ -81,6 +81,8 @@
 | 
					@@ -81,6 +81,8 @@
 | 
				
			||||||
 void redraw(void);
 | 
					 void redraw(void);
 | 
				
			||||||
 void draw(void);
 | 
					 void draw(void);
 | 
				
			||||||
@@ -484,7 +484,7 @@ diff --color -u b/st.h a/st.h
 | 
				
			|||||||
 void printscreen(const Arg *);
 | 
					 void printscreen(const Arg *);
 | 
				
			||||||
 void printsel(const Arg *);
 | 
					 void printsel(const Arg *);
 | 
				
			||||||
 void sendbreak(const Arg *);
 | 
					 void sendbreak(const Arg *);
 | 
				
			||||||
@@ -122,6 +124,7 @@
 | 
					@@ -120,6 +122,7 @@
 | 
				
			||||||
 extern int allowaltscreen;
 | 
					 extern int allowaltscreen;
 | 
				
			||||||
 extern int allowwindowops;
 | 
					 extern int allowwindowops;
 | 
				
			||||||
 extern char *termname;
 | 
					 extern char *termname;
 | 
				
			||||||
@@ -492,9 +492,9 @@ diff --color -u b/st.h a/st.h
 | 
				
			|||||||
 extern unsigned int tabspaces;
 | 
					 extern unsigned int tabspaces;
 | 
				
			||||||
 extern unsigned int defaultfg;
 | 
					 extern unsigned int defaultfg;
 | 
				
			||||||
 extern unsigned int defaultbg;
 | 
					 extern unsigned int defaultbg;
 | 
				
			||||||
diff --color -u b/x.c a/x.c
 | 
					diff --color -ru st-0.9/x.c st-0.9-a/x.c
 | 
				
			||||||
--- b/x.c	2022-03-18 10:26:17.489413722 +0530
 | 
					--- st-0.9/x.c	2022-10-04 23:11:26.000000000 +0530
 | 
				
			||||||
+++ a/x.c	2022-03-18 11:04:56.429522959 +0530
 | 
					+++ st-0.9-a/x.c	2022-11-25 02:12:19.385259029 +0530
 | 
				
			||||||
@@ -55,6 +55,7 @@
 | 
					@@ -55,6 +55,7 @@
 | 
				
			||||||
 static void clippaste(const Arg *);
 | 
					 static void clippaste(const Arg *);
 | 
				
			||||||
 static void numlock(const Arg *);
 | 
					 static void numlock(const Arg *);
 | 
				
			||||||
@@ -513,7 +513,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 static void xsetenv(void);
 | 
					 static void xsetenv(void);
 | 
				
			||||||
@@ -254,6 +256,8 @@
 | 
					@@ -254,6 +256,8 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 static int oldbutton = 3; /* button event on startup: 3 = release */
 | 
					 static uint buttons; /* bit field of pressed buttons */
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
+int usealtcolors = 0; /* 1 to use alternate palette */
 | 
					+int usealtcolors = 0; /* 1 to use alternate palette */
 | 
				
			||||||
+
 | 
					+
 | 
				
			||||||
@@ -543,7 +543,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 	cresize(0, 0);
 | 
					 	cresize(0, 0);
 | 
				
			||||||
 	redraw();
 | 
					 	redraw();
 | 
				
			||||||
 	xhints();
 | 
					 	xhints();
 | 
				
			||||||
@@ -750,6 +763,11 @@
 | 
					@@ -766,6 +779,11 @@
 | 
				
			||||||
 	return x == 0 ? 0 : 0x3737 + 0x2828 * x;
 | 
					 	return x == 0 ? 0 : 0x3737 + 0x2828 * x;
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -555,7 +555,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 int
 | 
					 int
 | 
				
			||||||
 xloadcolor(int i, const char *name, Color *ncolor)
 | 
					 xloadcolor(int i, const char *name, Color *ncolor)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -768,7 +786,7 @@
 | 
					@@ -784,7 +802,7 @@
 | 
				
			||||||
 			return XftColorAllocValue(xw.dpy, xw.vis,
 | 
					 			return XftColorAllocValue(xw.dpy, xw.vis,
 | 
				
			||||||
 			                          xw.cmap, &color, ncolor);
 | 
					 			                          xw.cmap, &color, ncolor);
 | 
				
			||||||
 		} else
 | 
					 		} else
 | 
				
			||||||
@@ -564,7 +564,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 	}
 | 
					 	}
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor);
 | 
					 	return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor);
 | 
				
			||||||
@@ -791,8 +809,8 @@
 | 
					@@ -807,8 +825,8 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	for (i = 0; i < dc.collen; i++)
 | 
					 	for (i = 0; i < dc.collen; i++)
 | 
				
			||||||
 		if (!xloadcolor(i, NULL, &dc.col[i])) {
 | 
					 		if (!xloadcolor(i, NULL, &dc.col[i])) {
 | 
				
			||||||
@@ -575,7 +575,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 			else
 | 
					 			else
 | 
				
			||||||
 				die("could not allocate color %d\n", i);
 | 
					 				die("could not allocate color %d\n", i);
 | 
				
			||||||
 		}
 | 
					 		}
 | 
				
			||||||
@@ -1034,6 +1052,67 @@
 | 
					@@ -1050,6 +1068,67 @@
 | 
				
			||||||
 	FcPatternDestroy(pattern);
 | 
					 	FcPatternDestroy(pattern);
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -643,7 +643,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 void
 | 
					 void
 | 
				
			||||||
 xunloadfont(Font *f)
 | 
					 xunloadfont(Font *f)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
@@ -1131,6 +1210,10 @@
 | 
					@@ -1147,6 +1226,10 @@
 | 
				
			||||||
 	usedfont = (opt_font == NULL)? font : opt_font;
 | 
					 	usedfont = (opt_font == NULL)? font : opt_font;
 | 
				
			||||||
 	xloadfonts(usedfont, 0);
 | 
					 	xloadfonts(usedfont, 0);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -654,7 +654,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 	/* colors */
 | 
					 	/* colors */
 | 
				
			||||||
 	xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
 | 
					 	xw.cmap = XDefaultColormap(xw.dpy, xw.scr);
 | 
				
			||||||
 	xloadcols();
 | 
					 	xloadcols();
 | 
				
			||||||
@@ -1184,13 +1267,13 @@
 | 
					@@ -1200,13 +1283,13 @@
 | 
				
			||||||
 	cursor = XCreateFontCursor(xw.dpy, mouseshape);
 | 
					 	cursor = XCreateFontCursor(xw.dpy, mouseshape);
 | 
				
			||||||
 	XDefineCursor(xw.dpy, xw.win, cursor);
 | 
					 	XDefineCursor(xw.dpy, xw.win, cursor);
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
@@ -670,7 +670,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 		xmousebg.red   = 0x0000;
 | 
					 		xmousebg.red   = 0x0000;
 | 
				
			||||||
 		xmousebg.green = 0x0000;
 | 
					 		xmousebg.green = 0x0000;
 | 
				
			||||||
 		xmousebg.blue  = 0x0000;
 | 
					 		xmousebg.blue  = 0x0000;
 | 
				
			||||||
@@ -1398,7 +1481,7 @@
 | 
					@@ -1414,7 +1497,7 @@
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 	/* Change basic system colors [0-7] to bright system colors [8-15] */
 | 
					 	/* Change basic system colors [0-7] to bright system colors [8-15] */
 | 
				
			||||||
 	if ((base.mode & ATTR_BOLD_FAINT) == ATTR_BOLD && BETWEEN(base.fg, 0, 7))
 | 
					 	if ((base.mode & ATTR_BOLD_FAINT) == ATTR_BOLD && BETWEEN(base.fg, 0, 7))
 | 
				
			||||||
@@ -679,7 +679,7 @@ diff --color -u b/x.c a/x.c
 | 
				
			|||||||
 
 | 
					 
 | 
				
			||||||
 	if (IS_SET(MODE_REVERSE)) {
 | 
					 	if (IS_SET(MODE_REVERSE)) {
 | 
				
			||||||
 		if (fg == &dc.col[defaultfg]) {
 | 
					 		if (fg == &dc.col[defaultfg]) {
 | 
				
			||||||
@@ -1626,6 +1709,8 @@
 | 
					@@ -1642,6 +1725,8 @@
 | 
				
			||||||
 int
 | 
					 int
 | 
				
			||||||
 xstartdraw(void)
 | 
					 xstartdraw(void)
 | 
				
			||||||
 {
 | 
					 {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user