# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 580c8bbd4691218849c9a809acaa4c95f65cb846
    parent 502911e55442a89602bd5681763f68250bff330b
    Author: Christoph Lohmann <20h@r-36.net>
    Date:   Wed,  3 Apr 2013 20:42:27 +0200

    Add an option to disable alternative screens.

    Diffstat:
    Mconfig.def.h | 3+++
    Mst.1 | 4++++
    Mst.c | 13+++++++++----

    3 files changed, 16 insertions(+), 4 deletions(-)
    diff --git a/config.def.h b/config.def.h
    @@ -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
    @@ -3,6 +3,7 @@
     st \- simple terminal
     .SH SYNOPSIS
     .B st
    +.RB [ \-a ]
     .RB [ \-c
     .IR class ]
     .RB [ \-f
    @@ -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
    @@ -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 */
    @@ -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,
    @@ -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;
    @@ -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];