Add an option to disable the smcup/rmcup alternate screen behaviour inside

tmux. From clemens fischer.
This commit is contained in:
Nicholas Marriott 2010-02-08 00:14:38 +00:00
parent 2dc74f2e4d
commit 11dedde511
4 changed files with 21 additions and 0 deletions

View File

@ -138,6 +138,7 @@ const struct set_option_entry set_session_option_table[] = {
const struct set_option_entry set_window_option_table[] = { const struct set_option_entry set_window_option_table[] = {
{ "aggressive-resize", SET_OPTION_FLAG, 0, 0, NULL }, { "aggressive-resize", SET_OPTION_FLAG, 0, 0, NULL },
{ "alternate-screen", SET_OPTION_FLAG, 0, 0, NULL },
{ "automatic-rename", 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-colour", SET_OPTION_COLOUR, 0, 0, NULL },
{ "clock-mode-style", { "clock-mode-style",

View File

@ -1148,6 +1148,7 @@ void
input_handle_sequence_sm(struct input_ctx *ictx) input_handle_sequence_sm(struct input_ctx *ictx)
{ {
struct window_pane *wp = ictx->wp; struct window_pane *wp = ictx->wp;
struct options *oo = &wp->window->options;
struct screen *s = &wp->base; struct screen *s = &wp->base;
u_int sx, sy; u_int sx, sy;
uint16_t n; uint16_t n;
@ -1178,6 +1179,8 @@ input_handle_sequence_sm(struct input_ctx *ictx)
case 1049: case 1049:
if (wp->saved_grid != NULL) if (wp->saved_grid != NULL)
break; break;
if (!options_get_number(oo, "alternate-screen"))
break;
sx = screen_size_x(s); sx = screen_size_x(s);
sy = screen_size_y(s); sy = screen_size_y(s);
@ -1224,6 +1227,7 @@ void
input_handle_sequence_rm(struct input_ctx *ictx) input_handle_sequence_rm(struct input_ctx *ictx)
{ {
struct window_pane *wp = ictx->wp; struct window_pane *wp = ictx->wp;
struct options *oo = &wp->window->options;
struct screen *s = &wp->base; struct screen *s = &wp->base;
u_int sx, sy; u_int sx, sy;
uint16_t n; uint16_t n;
@ -1254,6 +1258,8 @@ input_handle_sequence_rm(struct input_ctx *ictx)
case 1049: case 1049:
if (wp->saved_grid == NULL) if (wp->saved_grid == NULL)
break; break;
if (!options_get_number(oo, "alternate-screen"))
break;
sx = screen_size_x(s); sx = screen_size_x(s);
sy = screen_size_y(s); sy = screen_size_y(s);

13
tmux.1
View File

@ -1898,6 +1898,19 @@ command.
Duplicate input to any pane to all other panes in the same window, except Duplicate input to any pane to all other panes in the same window, except
for panes that are not in output mode. for panes that are not in output mode.
.Pp .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 .It Xo Ic utf8
.Op Ic on | off .Op Ic on | off
.Xc .Xc

1
tmux.c
View File

@ -395,6 +395,7 @@ main(int argc, char **argv)
options_init(&global_w_options, NULL); options_init(&global_w_options, NULL);
wo = &global_w_options; wo = &global_w_options;
options_set_number(wo, "aggressive-resize", 0); 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, "automatic-rename", 1);
options_set_number(wo, "clock-mode-colour", 4); options_set_number(wo, "clock-mode-colour", 4);
options_set_number(wo, "clock-mode-style", 1); options_set_number(wo, "clock-mode-style", 1);