Преглед на файлове

Add an option to disable alternative screens.

Christoph Lohmann преди 12 години
родител
ревизия
580c8bbd46
променени са 3 файла, в които са добавени 16 реда и са изтрити 4 реда
  1. 3 0
      config.def.h
  2. 4 0
      st.1
  3. 9 4
      st.c

+ 3 - 0
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;

+ 4 - 0
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

+ 9 - 4
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];