From 10abdd97cf23b7a389cb9b97f4d68a142e8e4bf0 Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Mon, 8 Feb 2010 18:32:34 +0000 Subject: [PATCH] Sync OpenBSD patchset 642: Add an option to disable the smcup/rmcup alternate screen behaviour inside tmux. From clemens fischer. --- cmd-set-option.c | 3 ++- input.c | 8 +++++++- tmux.1 | 17 +++++++++++++++-- tmux.c | 3 ++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/cmd-set-option.c b/cmd-set-option.c index 1819fe3c..56cebfa8 100644 --- a/cmd-set-option.c +++ b/cmd-set-option.c @@ -1,4 +1,4 @@ -/* $Id: cmd-set-option.c,v 1.94 2010-02-05 01:31:06 tcunha Exp $ */ +/* $Id: cmd-set-option.c,v 1.95 2010-02-08 18:32:34 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -138,6 +138,7 @@ const struct set_option_entry set_session_option_table[] = { const struct set_option_entry set_window_option_table[] = { { "aggressive-resize", SET_OPTION_FLAG, 0, 0, NULL }, + { "alternate-screen", SET_OPTION_FLAG, 0, 0, NULL }, { "automatic-rename", SET_OPTION_FLAG, 0, 0, NULL }, { "clock-mode-colour", SET_OPTION_COLOUR, 0, 0, NULL }, { "clock-mode-style", diff --git a/input.c b/input.c index 27674d0c..6d457880 100644 --- a/input.c +++ b/input.c @@ -1,4 +1,4 @@ -/* $Id: input.c,v 1.106 2010-01-08 16:22:02 tcunha Exp $ */ +/* $Id: input.c,v 1.107 2010-02-08 18:32:34 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -1148,6 +1148,7 @@ void input_handle_sequence_sm(struct input_ctx *ictx) { struct window_pane *wp = ictx->wp; + struct options *oo = &wp->window->options; struct screen *s = &wp->base; u_int sx, sy; uint16_t n; @@ -1178,6 +1179,8 @@ input_handle_sequence_sm(struct input_ctx *ictx) case 1049: if (wp->saved_grid != NULL) break; + if (!options_get_number(oo, "alternate-screen")) + break; sx = screen_size_x(s); sy = screen_size_y(s); @@ -1224,6 +1227,7 @@ void input_handle_sequence_rm(struct input_ctx *ictx) { struct window_pane *wp = ictx->wp; + struct options *oo = &wp->window->options; struct screen *s = &wp->base; u_int sx, sy; uint16_t n; @@ -1254,6 +1258,8 @@ input_handle_sequence_rm(struct input_ctx *ictx) case 1049: if (wp->saved_grid == NULL) break; + if (!options_get_number(oo, "alternate-screen")) + break; sx = screen_size_x(s); sy = screen_size_y(s); diff --git a/tmux.1 b/tmux.1 index a4f41947..cdf4e298 100644 --- a/tmux.1 +++ b/tmux.1 @@ -1,4 +1,4 @@ -.\" $Id: tmux.1,v 1.231 2010-02-08 18:31:07 tcunha Exp $ +.\" $Id: tmux.1,v 1.232 2010-02-08 18:32:34 tcunha Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott .\" @@ -14,7 +14,7 @@ .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: February 7 2010 $ +.Dd $Mdocdate: February 8 2010 $ .Dt TMUX 1 .Os .Sh NAME @@ -1898,6 +1898,19 @@ command. Duplicate input to any pane to all other panes in the same window, except for panes that are not in output mode. .Pp +.It Xo Ic alternate-screen +.Op Ic on | off +.Xc +This option configures whether programs running inside +.Nm +may use the terminal alternate screen feature, which allows the +.Em smcup +and +.Em rmcup +.Xr terminfo 5 +capabilities to be issued to preserve the existing window content on start and +restore it on exit. +.Pp .It Xo Ic utf8 .Op Ic on | off .Xc diff --git a/tmux.c b/tmux.c index e857421f..c5045888 100644 --- a/tmux.c +++ b/tmux.c @@ -1,4 +1,4 @@ -/* $Id: tmux.c,v 1.202 2010-02-08 18:25:04 tcunha Exp $ */ +/* $Id: tmux.c,v 1.203 2010-02-08 18:32:34 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -398,6 +398,7 @@ main(int argc, char **argv) options_init(&global_w_options, NULL); wo = &global_w_options; options_set_number(wo, "aggressive-resize", 0); + options_set_number(wo, "alternate-screen", 1); options_set_number(wo, "automatic-rename", 1); options_set_number(wo, "clock-mode-colour", 4); options_set_number(wo, "clock-mode-style", 1);