tAdd an option to disable alternative screens. - st - [fork] customized build o… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 580c8bbd4691218849c9a809acaa4c95f65cb846 | |
parent 502911e55442a89602bd5681763f68250bff330b | |
Author: Christoph Lohmann <[email protected]> | |
Date: Wed, 3 Apr 2013 20:42:27 +0200 | |
Add an option to disable alternative screens. | |
Diffstat: | |
M config.def.h | 3 +++ | |
M st.1 | 4 ++++ | |
M st.c | 13 +++++++++---- | |
3 files changed, 16 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
t@@ -13,6 +13,9 @@ static char shell[] = "/bin/sh"; | |
static unsigned int doubleclicktimeout = 300; | |
static unsigned int tripleclicktimeout = 600; | |
+/* alt screens */ | |
+static bool allowaltscreen = true; | |
+ | |
/* frames per second st should at maximum draw to the screen */ | |
static unsigned int xfps = 60; | |
static unsigned int actionfps = 30; | |
diff --git a/st.1 b/st.1 | |
t@@ -3,6 +3,7 @@ | |
st \- simple terminal | |
.SH SYNOPSIS | |
.B st | |
+.RB [ \-a ] | |
.RB [ \-c | |
.IR class ] | |
.RB [ \-f | |
t@@ -23,6 +24,9 @@ st \- simple terminal | |
is a simple terminal emulator. | |
.SH OPTIONS | |
.TP | |
+.B \-a | |
+disable alternate screens in terminal | |
+.TP | |
.BI \-c " class" | |
defines the window class (default $TERM). | |
.TP | |
diff --git a/st.c b/st.c | |
t@@ -43,7 +43,7 @@ | |
#define USAGE \ | |
"st " VERSION " (c) 2010-2013 st engineers\n" \ | |
- "usage: st [-v] [-c class] [-f font] [-g geometry] [-o file]" \ | |
+ "usage: st [-a] [-v] [-c class] [-f font] [-g geometry] [-o file]" \ | |
" [-t title] [-w windowid] [-e command ...]\n" | |
/* XEMBED messages */ | |
t@@ -1615,7 +1615,10 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |
break; | |
case 1049: /* = 1047 and 1048 */ | |
case 47: | |
- case 1047: { | |
+ case 1047: | |
+ if (!allowaltscreen) | |
+ break; | |
+ | |
alt = IS_SET(MODE_ALTSCREEN); | |
if(alt) { | |
tclearregion(0, 0, term.col-1, | |
t@@ -1625,8 +1628,7 @@ tsetmode(bool priv, bool set, int *args, int narg) { | |
tswapscreen(); | |
if(*args != 1049) | |
break; | |
- } | |
- /* pass through */ | |
+ /* FALLTRU */ | |
case 1048: | |
tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD); | |
break; | |
t@@ -3316,6 +3318,9 @@ main(int argc, char *argv[]) { | |
for(i = 1; i < argc; i++) { | |
switch(argv[i][0] != '-' || argv[i][2] ? -1 : argv[i][1]) { | |
+ case 'a': | |
+ allowaltscreen = false; | |
+ break; | |
case 'c': | |
if(++i < argc) | |
opt_class = argv[i]; |